作者storm654321 (番茄汁)
看板MATLAB
标题[讨论] 多次 阵列叠加 这样写出现警告O'_'O
时间Sat Mar 12 10:19:16 2016
不好意思,请问各位大大:
a=rand(1,10);
b=a; %宣告一条 1X10的阵列
for i=2:100
a=rand(1,10);
b=[b;a]; %把这些阵列叠加上去
end
这是本肥宅在做PCA的撷取特徵步骤
这个例子 想要把每条 1X10 循序叠上去
叠成一个 100X10的矩阵
可是这样的作法 在黄色的地方出现警告说
b变数在每次回圈都改变大小,会拖慢速度
是不是该写成这样比较好呢?
b(100,10)=0; %宣告一个矩阵
for i=1:100
a=rand(1,10);
b(i,:)=a; %每一列换成我想要的1X10阵列
end
请问这两者有差吗?
还是有更好的做法 O'_'O 我就换更好的做法
--------------------------------------
刚去测了一下时间 做10000次
Elapsed time is 0.353152 seconds. %第一种
Elapsed time is 0.006834 seconds. %第二种
请问还有其他做法吗@@!!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 203.64.91.23
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1457749160.A.F6A.html
※ 编辑: storm654321 (203.64.91.23), 03/12/2016 10:21:18
※ 编辑: storm654321 (203.64.91.23), 03/12/2016 10:23:04
※ 编辑: storm654321 (203.64.91.23), 03/12/2016 10:26:12
1F:推 celestialgod: 矩阵宣告应该是b=zeros(100,10) 03/12 13:17
2F:→ celestialgod: preallocate速度比较快,之前有讨论过 03/12 13:17
感谢您的回答,100p了表心意
3F:→ storm654321: 感谢 03/12 17:15
※ 编辑: storm654321 (203.64.91.23), 03/12/2016 17:17:43