1. matlab网上资源
2. 向量化编程
a = rand(10000);
b = rand(10000);
clear a
b = rand(10000);
不需要a就及时把它清理掉。
1. 及时清除不用的变量
a = rand(10000); b = rand(10000); clear a b = rand(10000);
2. 使用变量前,预分配内存空间
clear all clc n = 30000; tic; for k = 1:n a(k) = 1; end time = toc; disp(['未预分配内存下动态赋值长为',num2str(n),'的数组时间是:',num2str(time),'秒!']) tic b = zeros(1,n); for k = 1:n b(k) = 1; end time = toc; disp(['预分配内存下动态赋值长为',num2str(n),'的数组时间是:',num2str(time),'秒!']) %%c % 3. 选择恰当的数据类型 clear all clc n = 300000; a = 8; b{1} = 8; c.data = 8; tic for k = 1:n; a; end time = toc; disp(['访问',num2str(n),'次double型数组时间是:',num2str(time),'秒!']) tic for k = 1:n; b{1}; end time = toc; disp(['访问',num2str(n),'次cell型数组时间是:',num2str(time),'秒!']) tic for k = 1:n; c.data; end time = toc; disp(['访问',num2str(n),'次struct型数组时间是:',num2str(time),'秒!'])
4. 按列优先循环
clear all clc n = 1000; a = rand(n); tic for i = 1:n for j = 1:n a(i,j); end end toc for i = 1:n for j = 1:n a(j,i); end end toc
5. 循环次数多的变量安排在内层
clear all clc tic a = 0; for i = 1:1000 for j = 50000 a = a + 1; end end toc tic a = 0; for i = 1:50000 for j = 1:1000 a = a + 1; end end toc
6. 给一些函数“瘦身”
edit mean clear all clc a = rand(1,10000); tic b = mean(a) toc tic c = sum(a)/length(a) toc