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