MATLAB 程序优化(加速)一般方法

一、向量化

尽量使用矩阵操作,避免for loop

小技巧

1.1设置上下限

 tic
A=0:0.00001:10;
B=0:0.00001:10;
Z=zeros(size(A));
y=0;
for i=1:100001
 if (A(i)<0.1) 
     A(i)=0.1;
 elseif (A(i)>0.1) 
     A(i)=0.9;
 end
 Z(i)=sin(0.5*A(i))*exp(B(i)^2);
 y=y+Z(i);
end
 toc
 y
时间已过 0.030514 秒。

tic
A=0:0.00001:10;
B=0:0.00001:10;
Z=zeros(size(A));
y=0;
A=max(A,0.1);
A=min(A,0.9);
y=sin(0.5*A(i))*exp(B(i)^2)';
 toc
 y
时间已过 0.018558 秒。

y =

    1.1824

二、预分配内存

提前分配好内存可以加速程序执行,如果不知道大小,可以预先分配一个比较打的矩阵。

>> tic 
 x=1;
 x(2)=2;
 x(3)=3;
 x(4)=4;
 x(5)=5;
 toc
 
 %preallocation
  tic 
  y=zeros(4,1);
 y=1;
 y(2)=2;
 y(3)=3;
 y(4)=4;
 y(5)=5;
 toc
时间已过 0.039377 秒。
时间已过 0.003747 秒。

三、列储存优先

MATLAB是按列储存方式column by column.如果不得不用for loop 可以按列访问

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值