如何提高matlab的运算速度慢,如何提高 matlab 计算速度 运算效率

最近在网上查了一些资料,并结合自己的经验,就如何提高matlab计算效率,总结一下几个原则:

1. 提前给数组分配大小。

例如:在程序循环时用到数组变量 a ,若知道数组 a 的大小或者知道 a 的大小上界,则可以提前给数组a 分配大小。一般MATLAB也会给没有提前

分配大小的变量数组下面标示红线,提醒修改。

a=zeros(10,10)生成一个10行10列的零矩阵。

a=100*ones(10,10)生成一个10行10列的矩阵,并且每个元素都是100。

a=(1:10)生成一个从1到10的1行10列矩阵。

2. 尽量用矢量计算,减少 for 循环。

最近我也才意识到这一点,matlab自带的很多函数都支持矢量计算。直接矢量计算,避免大量的for循环。

用 min 函数举例:

clc

a=(1:1000000);

tic

for i=1:1000000

a(i)=min(a(i),100);

end

toc

tic

b=max(a,100);

toc

结果显示:

时间已过 0.028604 秒。

时间已过 0.006296 秒。

可见后者比前者的 for 循环快。

3. 尽量调用 maltab自带的函数来实现一些功能。

这个是显而易见的,matlab自带的函数由大神级的matlab开发人员所编写,他们当然会在计算速度上做不少优化,一定比我们编写的好。

4. 少用 find 函数,用 logical 替代。

查找替换矩阵中的元素,过去用 find 函数,现在用 logical 更好。

下面用一个例子,分别测试 for 循环,find函数,logical函数查找替换:

a=(1:10000000);

tic

for i=1:length(a)

if a(i)>5

a(i)=1;

end

end

toc

tic

a(find(a)>5)=1;

toc

tic

a(logical(a)>5)=1;

toc

结果显示:

时间已过 0.407840 秒。

时间已过 0.378585 秒。

时间已过 0.119918 秒

可见,find 函数仅仅比 for 循环快一点,而 logical 函数则显著快于它们。

5. 大规模的循环,可以调用 c语言或 C++来 计算。

这个见不少资料说,自己还没试过,有机会测试一下。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值