作者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/cn.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