Matlab运行速度优化

当我们需要处理较大数据量,或者程序中有一些较为复杂的逻辑。这个时候就需要对程序进行一定的优化,以下是一些小技巧与例子的展示。

硬件方面

1.提升电脑的配置

2.在Matlab软件中设置,分配更多的运行内存

代码方面:

1.数据格式double转成single

 A_length = length(A);
 numbers = 50;
 for k = 1:numbers
     for i = 1:A_length
         for j = 1:A_length
             A(i,j) = A(i,j)*rand; 
         end
     end
 end
 ​
 ​
 %矩阵维度:1000*1000
 %double:时间已过 1.700172 秒
 %single:时间已过 1.546184 秒。
 ​
 %矩阵维度:5000*5000
 %double:时间已过 50.057981 秒。
 %single:时间已过 45.139951 秒。

2.避免for循环

%code1:
 y =[];
 number = 100000;
 for i =1:number
    y = [y sin(i)]; 
 end
 ​
 % 时间已过 2.749184 秒。

%code2:
 y =[];
 number = 100000;
 y = sin([1:1:number]); 
 % 时间已过 0.001548 秒。

3.预先声明变量长度

 number = 1000; %5000
 %%新建一个矩阵
 %这一句就是原先声明变量的长度
 A = zeros([number number]);
 ​
 for i =1:number
    for j =1:number
       if rand >0.5
        A(i,j) = 1;
       end
    end
 end
 ​
 ​
 %1000*1000
 %未声明:时间已过 0.237895 秒。
 %已声明:时间已过 0.041581 秒。
 ​
 %5000*5000
 %未声明:时间已过 41.466290 秒。
 %已声明:时间已过 0.962321 秒。

经过测试,可以看到预先分配数组的大小避免使用for循环对运行速度的提升效果是最好的,特别是当数据量越大的时候,效果也就越好。

希望对大家有所帮助。

本文章首发于:

XuXing’s blog

欢迎大家访问。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值