[讨论] 用for loop将阵列数值重新排列

楼主: amateuruser (U文心得大师)   2018-08-20 18:33:36
想问一下版上的大大们
目前我有一个实验64笔数据是给16个传感器变化数值
每一个传感器会有获得4笔资料
但是目前我手边的是一个excel所获得的1*64 array数值
请问一下要如何用matlab中的for loop将该阵列1*64 转为 16*4 呢?
再者如果我资料是16的倍数 数量的话
是否用取余数的概念处理不会发生错误呢 谢谢
示意图:
https://i.imgur.com/F9tIpn1.jpg
谢谢
作者: LiamIssac (Madchester)   2018-08-20 19:45:00
查一下有关matrix operation的内容 有个fn就是你要的一时记不起来
作者: YoursEver (猪是妳)   2018-08-20 21:28:00
reshape?
作者: profyang (prof)   2018-08-20 22:41:00
a=1:64.'; b=zeros(16,4); b(:)=a(:); b=b.';不用reshape就这样XD
作者: sppmg (sppmg)   2018-08-20 23:27:00
p大是利用 ind2sub()的概念?
作者: dati (水脑)   2018-08-21 11:25:00
其实reshape 是最快的 a=[64x1]; b= reshape(a,16,4)'
作者: profyang (prof)   2018-08-21 14:44:00
其实这样就可以了 b= reshape(a,16,[])'reshape就是你给他其他dimension 剩下一个他自己会除我上面的写法就是 Matlab的2维阵列其实也有个1维编号 也就是M(1,1), M(2,1), M(3,1)这样算下去b(:)=a(:)这样就是让b(1,1)=a(1); b(2,1)=a(2).....b(1,2)=a(17); ...... b(16,4)=a(64);注:Matlab阵列的这个编号跟C++的2D阵列是相反的 C++是先算列再算行: M(1,1), M(1,2), M(1,3)...M(2,1), M(2,2)
作者: zu11tune13 (命运13)   2018-08-22 23:25:00
用n除16后的商跟余数决定行列位置

Links booklink

Contact Us: admin [ a t ] ucptt.com