1. matlab网上资源

matlab基础2

 2. 向量化编程

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

 

matlab基础2

相关文章:

  • 2021-11-19
  • 2022-01-08
  • 2022-01-08
猜你喜欢
  • 2021-09-15
  • 2021-11-18
  • 2021-11-19
  • 2021-11-02
  • 2021-12-25
  • 2021-12-19
  • 2021-12-14
相关资源
相似解决方案