[討論] 用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