当我们需要处理较大数据量,或者程序中有一些较为复杂的逻辑。这个时候就需要对程序进行一定的优化,以下是一些小技巧与例子的展示。
硬件方面
1.提升电脑的配置
2.在Matlab软件中设置,分配更多的运行内存
代码方面:
数据格式double转成single
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18A_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 秒。
避免for循环
code1:
1
2
3
4
5
6
7y =[];
number = 100000;
for i =1:number
y = [y sin(i)];
end
% 时间已过 2.749184 秒。code2:
1
2
3
4y =[];
number = 100000;
y = sin([1:1:number]);
时间已过 0.001548 秒。
预先声明变量长度
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21number = 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循环对运行速度的提升效果是非常好的,特别是当数据量越大的时候,效果也就越好。
希望对大家有所帮助。