⑴ 如何让自己的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、使用全局变量和临时变量,尽可能减少内存消耗。
。。。。。。
等等