首頁 > 軟體

如何消除matlab中陣列大小在改變的警告?

2019-12-25 03:49:09

在使用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倍之多。



IT145.com E-mail:sddin#qq.com