作者yuhung (MimiBao)
看板MATLAB
標題[討論] 矩陣重組reshape(更有效率方法?)
時間Mon Aug 29 12:23:04 2016
我現在處理很大的數據
每筆數據都是透過binary檔案讀出來的
一開始讀出來長這樣:
PPPP.....PP QQQQQ....QQ DD....DD
P、Q、D的數目相同 (P、Q、D代表參數,我其實有9種不同參數)
reshap後可以變成這樣
12345678.....
A
PPPPPP
QQQQQQ
DDDDDD
B PPPPPPQQQQQQDDDDDD
C PPPPPPQQQQQQDDDDDD
D PPPPPPQQQQQQDDDDDD
但我希望長這樣:
PQD
PQD
PQD
PQD
PQD
...etc.
我現在用的方法很土法煉鋼,不是迴圈(迴圈會變超級慢,因為總共是45萬*9參數)
我是使用編號的方法,在第二步加了橫向的編號
透過幾次轉置矩陣+reshap後
利用sortrow(編號)達到我要的效果,雖然速度上也夠快
但總覺得程式碼很醜
不知道有沒有更簡潔的作法?
謝謝 :)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 8.26.231.63
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MATLAB/M.1472444588.A.BFA.html
1F:推 sunev: reshape(permute(reshape(X,4,112500,9),[2 1 3]),[],9); 08/29 12:34
2F:→ yuhung: 請問為什麼是112500? 另外[2 1 3]這裡我不太了解 08/29 12:47
3F:→ yuhung: P、Q、D分別代表三種參數 但我事實上有九種 08/29 12:47
4F:→ yuhung: 其實我和permute真的不太熟 剛剛也是看好久但越跑越怪QQ 08/29 12:48
5F:→ yuhung: 我看懂了,謝謝你QQ 這樣一行抵我8行啊!感激不盡 08/29 13:02
6F:推 sunev: 如果把轉置看成 A_ij -> A_ji ,那permute就是轉置的推廣 08/29 13:08
7F:→ yuhung: 謝謝,我剛剛寫出來變成index notation後,果然就清楚多了 08/29 13:16
8F:→ yuhung: 倒是真的沒想到reshape有更多維度可以運用 08/29 13:17