2021-05-12 14:32:11
如何消除matlab中陣列大小在改變的警告?
在使用matlab時,經常會遇到下圖中的這種提示:the variable appears to change size on every loop iteration。。。對於這種情況來說,雖然不會對計算結果產生影響,但是會極大地影響計算速度。應該如何避免這種情況的發生呢?
1
首先,點選New(1-1)---Script(1-2)---輸入(1-3)的程式碼--點選(1-4)的Run。可看到(1-5)所示的運算時間為0.007708秒。
程式碼如下:
% the variable appears to change size on every loop iteration
%解決方法
tic %計時開始
for i=1:100000
m(i)=i;
end
toc %計時結束
2
選中(2-1)的程式碼---ctrl+R將其註釋掉(2-2)---點選(2-3)Save。
3
輸入(3-1)所示的程式碼---點選Run(3-2)。執行時間為0.000854秒。
程式碼如下:
m=zeros(100000,1); %事先開闢一個100000行1列的0陣列。
tic %計時開始
for i=1:100000
m(i)=i;
end
toc % 計時結束
4
可見,二者的比值:0.007708/0.000854=9.0258。可見改進後速度是改進前的9.0258倍。
5
下面對一個二維陣列,進行同樣的比較。
程式碼如下:
tic %計時開始
for i=1:100000
for j=1:10
m(i,j)=i;
end
end
toc %計時結束
m=zeros(100000,10); %事先開闢一個100000行10列的0陣列。
tic %計時開始
for i=1:100000
for j=1:10
m(i,j)=i;
end
end
toc % 計時結束
我們看到改進後m下面的黃色警告線已經消失了!
6
可見改進後是改進的6倍之多。
相關文章