作者amateuruser (( ・ω・`))
看板MATLAB
標題[討論] 用for loop將陣列數值重新排列
時間Mon Aug 20 18:33:36 2018
想問一下版上的大大們
目前我有一個實驗64筆數據是給16個感測器變化數值
每一個感測器會有獲得4筆資料
但是目前我手邊的是一個excel所獲得的1*64 array數值
請問一下要如何用matlab中的for loop將該陣列1*64 轉為 16*4 呢?
再者如果我資料是16的倍數 數量的話
是否用取餘數的概念處理不會發生錯誤呢 謝謝
示意圖:
https://i.imgur.com/F9tIpn1.jpg
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.247.225.83
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MATLAB/M.1534761220.A.E95.html
1F:推 LiamIssac: 查一下有關matrix operation的內容 有個fn就是你要的08/20 19:45
2F:→ LiamIssac: 一時記不起來08/20 19:45
※ 編輯: amateuruser (27.247.225.83), 08/20/2018 20:12:10
※ 編輯: amateuruser (27.247.225.83), 08/20/2018 20:13:17
3F:→ YoursEver: reshape?08/20 21:28
感謝L大 Y大回覆 目前還在研究看看
抱歉 可能沒有講清楚 因為我目前所獲得的數據為1X64 一個直行的數據 但因為我每16個數
※ 編輯: amateuruser (27.247.225.83), 08/20/2018 22:44:34
4F:推 profyang: a=1:64.'; b=zeros(16,4); b(:)=a(:); b=b.';08/20 22:41
5F:→ profyang: 不用reshape就這樣XD08/20 22:41
P大 我研究一下 因為一開始我一直想著 C++語法 需要巢狀迴圈才能將每一筆資料存在loop
※ 編輯: amateuruser (27.247.225.83), 08/20/2018 22:47:40
想請教一下P大 因為小弟為新手 想問一下這語法屬於哪一個部分 我去查閱一下 感謝
※ 編輯: amateuruser (27.247.225.83), 08/20/2018 22:50:20
6F:推 sppmg: p大是利用 ind2sub()的概念?08/20 23:27
7F:→ dati: 其實reshape 是最快的 a=[64x1]; b= reshape(a,16,4)'08/21 11:25
8F:推 profyang: 其實這樣就可以了 b= reshape(a,16,[])'08/21 14:44
9F:→ profyang: reshape就是你給他其他dimension 剩下一個他自己會除08/21 14:45
10F:→ profyang: 我上面的寫法就是 Matlab的2維陣列其實也有個1維編號 也08/21 14:46
11F:→ profyang: 就是M(1,1), M(2,1), M(3,1)這樣算下去08/21 14:47
12F:→ profyang: b(:)=a(:)這樣就是讓b(1,1)=a(1); b(2,1)=a(2).....08/21 14:47
13F:→ profyang: b(1,2)=a(17); ...... b(16,4)=a(64); 08/21 14:48
14F:→ profyang: 注:Matlab陣列的這個編號跟C++的2D陣列是相反的 C++是先 08/21 14:49
15F:→ profyang: 算列再算行: M(1,1), M(1,2), M(1,3)...M(2,1), M(2,2)08/21 14:50
感謝 P大 我研究一下 matlab真的減少很多要用C思考的結構
※ 編輯: amateuruser (27.247.228.177), 08/21/2018 18:23:36
16F:→ zu11tune13: 用n除16後的商跟餘數決定行列位置 08/22 23:25