作者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://www.ptt.cc/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
推 celestialgod: 矩陣宣告應該是b=zeros(100,10) 03/12 13:17
→ celestialgod: preallocate速度比較快,之前有討論過 03/12 13:17
感謝您的回答,100p了表心意
→ storm654321: 感謝 03/12 17:15
※ 編輯: storm654321 (203.64.91.23), 03/12/2016 17:17:43