⑴ 如何讓自己的matlab程序跑的更快
1、一定要利用好M-file編輯器,因為會有一些著重標示的優化建議。
例如,你在編輯器里輸入以下代碼:
for k = 1:NumTrials
r = rand;
x(k) = runsim(r);
end
hist(x);
它會用紅色波浪線表示出來,提示你最好先預設x的值。
另外:
最好在一個單獨的文件夾里運行程序;
寫好程序代碼的注釋,利人利己;
將常用的命令存下來,方便以後調用。
2、在運行循環的時候,一定要預設變數值!
可以用 cell 和zeros這兩個矩陣命令,對變數進行預設。
例如,
a(1) = 1;
b(1) = 0;
for k = 2:8000
a(k) = 0.99803 * a(k -1)-0.06279 * b(k-1);
b(k) = 0.06279 * a(k-1) + 0.99803 * b(k-1);
end
,沒有預設,大約耗費0.47秒;
a = zeros(1,8000); % Preallocation
b = zeros(1,8000);
a(1) = 1;
b(1) = 0;
for k = 2:8000
a(k) = 0.99803 * a(k -1)-0.06279 * b(k-1);
b(k) = 0.06279 * a(k-1) + 0.99803 * b(k-1);
end
有預設,大約耗費0.14秒!
⑵ 怎麼加快matlab的計算速度
根據我的一些經驗和相關的參考資料,要想提高其運算的速度,以下的方法可以試一下:
(1)盡可能地用向量化的數組運算代替循環,盡可能地減少使用戶for或while循環,這是因為matlab執行循環運算效率很低而數組運算效率較高。舉個最經典的例子,下面的循環:
k=0;
for t=0:pi/20:2*pi;
k=k+1;
y(k)=cos(t);end;
就可以用t=0:pi/20:2*pi;y=cos(t)代替,這樣即減少代碼量又能提高運算速度
(2)如果非要用循環的話盡可能進行循環內數組的預配置而不是讓程序在循環中不斷地動態配置,好比像C語言中要想使用數組必須先定義數組的長度一樣,比如說如果想要做以下的循環:
k=0;
for t=1:1:20;
k=k+1;
y(k)=t^2;end;
可以事先定義y=linspace(0,0,20)即定義y為一個擁有20個0的一維數組,這樣就相當於是事先對循環內的數組進行了預配置;
(3)盡可能採用MATLAB自帶的函數指令,這些函數都是一些很經典的演算法構成的,比如說要想找最大值就應用函數max而不是自己去編程序,這樣只會事倍功半;
(4)盡量採用M函數文件替代M的腳本文件,因為函數文件運行時是採用P碼方式駐留在內存中而不是像腳本文件一樣每運行一次都要經歷把程序裝入內存的過程,因而比較省時;
(5)在循環比較費時的時候可以考慮採用非解釋執行的MEX文件來對此進行表達;
(6)盡可能找出導致程序運行緩慢的瓶頸,可以在MATLAB的View:profiler中打開程序剖析器找出程序運行中的瓶頸,具體使用的方法請參考MATLAB的幫助或者在網上尋找;
(7)從硬體來看電腦的CPU或者內存(不是大小而是讀寫速度)可能會是瓶頸,在做大型運算時可以考慮較好的配置。
希望對你有所幫助!
⑶ matlab編程如何設置斷點、如何單步調試、如何提高程序運行速度
1、設置斷點:在行號處點擊有小紅點出現,即可作為斷點進行調試(F5是繼續調試)。如圖:
⑷ matlab程序運行太慢,請大神幫看看,如何優化加快運算速度!
建議:取消syms,用數值積分方法先計算積分號裡面的東西,而不要用符號積分演算法。將下面這段:
symsz
w1=mt*t0/(4*pi*M*ne*(DL*DT)^0.5);
w2=exp(x.*u/(2*DL));
B=((u*x./(2*DL)).^2+(u*y).^2/(4*DL*DT)).^0.5;
w3=2*besselk(0,B);
w5=int((1/z)*exp(-z-(B.^2/(z*4))),t*u^2/(4*DL),inf);
w4=double(w5);
替換為
w1=mt*t0/(4*pi*M*ne*(DL*DT)^0.5);
w2=exp(x.*u/(2*DL));
B=((u*x./(2*DL)).^2+(u*y).^2/(4*DL*DT)).^0.5;
w3=2*besselk(0,B);
ifun=@(z,B)(1./z).*exp(-z-(B.^2./(z*4)));
w5=integral(@(z)ifun(z,B),t*u^2/(4*DL),inf);
w4=w5;
⑸ matlab編程如何設置斷點、如何單步調試、如何提高程序運行速度
1、打開Matlab軟體,【打開】或新建調試文件。
⑹ matlab中,如何加快數據運算速度
matlab中,如何加快數據運算速度?建議如下:
1、能用數組形式計算,盡可能使用數組點運算。
2、盡量減少循環運算,能不用循環過程盡量不用。
3、使用全局變數和臨時變數,盡可能減少內存消耗。
。。。。。。
等等