matlab提高运行速度

本文介绍了四个提高MATLAB程序运行速度的方法:为矩阵变量预制内存,将循环语句改写为向量形式,利用逻辑数组进行矢量化运算,以及使用MATLAB profiler进行代码优化。通过这些技巧,可以显著提升代码执行效率。

1)为矩阵变量预制内存而不是动态分配

慢:

for k = 2:1000 

    x(k) = x(k-1) + 5; 

end 

快:

x = zeros(1, 1000); 

for k = 2:1000 

    x(k) = x(k-1) + 5; 

end 

在程序一开始就为所有大的矩阵变量预制存储单元。

 

(2)将循环语句改为向量形式

慢:

For ii=1:100

Square(ii)=ii^2;

End

快:

ii=1:100;

Square(ii)=ii^2;


!!!运行速度从慢到快依次为:for loop → for loop+preallocate with zeros function → vectorize


(3)逻辑数组可以用来将某个数组的子数组进行矢量化运算,避免循环,加快运行速度:

a=[1 2 3;4 5 6;7 8 9];

b=a>5

a(b)=sqrt(a(b)) %a中大于5的数字求平方根

a(~b)=a(~b).^2  %a中小于等于5的数字求平方

输出结果:

b =

 

     0     0     0

     0     0     1

     1     1     1

a =

 

    1.0000    2.0000    3.0000

    4.0000    5.0000    2.4495

    2.6458    2.8284    3.0000

a =

 

    1.0000    4.0000    9.0000

   16.0000   25.0000    2.4495

    2.6458    2.8284    3.0000


(4)matlab profiler(运行和计时)

    根据每行代码所耗费的时间分别改进。




2.生成随机数时,生成均匀分布的函数rand(x,y)的速度比生成其它分布的随机数的函数速度快的多,大概10倍左右;当要生成除正态和均匀分布以外的随机数时,自定义函数要比通用函数快的多,比如生成指数分布随机数,exprnd(1,1,20)速度是random(‘exp’,1,1,20)的40多倍。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值