matlab运行速度优化

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

硬件方面

1.提升电脑的配置

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

代码方面:

  1. 数据格式double转成single

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    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 秒。
  1. 避免for循环

    code1:

    1
    2
    3
    4
    5
    6
    7
    y =[];
    number = 100000;
    for i =1:number
    y = [y sin(i)];
    end

    % 时间已过 2.749184 秒。

    code2:

    1
    2
    3
    4
    y =[];
    number = 100000;
    y = sin([1:1:number]);
    时间已过 0.001548 秒。
  1. 预先声明变量长度

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    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循环对运行速度的提升效果是非常好的,特别是当数据量越大的时候,效果也就越好。

希望对大家有所帮助。

© 2021 XuXing's blog All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero