首页 > 编程知识 正文

预分配内存大小,matlab数组超过预设大小

时间:2023-05-03 21:02:52 阅读:169150 作者:3799

matlab矩阵的存储器预分配意味着定义固定的存储块,每个数据可以直接存储在“行、列指数”中的对应元素中。 如果矩阵中没有预配置内存。 随着“行、列指数”的增大。 MATLAB必须继续为矩阵找到新的“空存储器”,“排队”的速度将大幅降低。

Hilbert矩阵的数学刻画

Hilbert矩阵是有名的“恶劣条件”矩阵,其中第(I,j )元素的公式为a ) I,j )=1/) Ij-1 )。

代码比较:

% 2014-11-8

% Hilbert矩阵的数学刻画

清除

开始tic %秒表

K=1000;

在for ii=1:K %以下创建(K*K )矩阵

for wxdmj=1:K

a1(ii,wxdmj )=1/) iiwxdmj-1 );

结束

结束

toc %输出第一方法很费时间

tic

a2=Zeros(k,k ); 在%矩阵中预先配置内存区域

for ii=1:K

for wxdmj=1:K

a2(ii,wxdmj )=1/) iiwxdmj-1 );

结束

结束

toc %别的方法很费时间

tic

ii=repmat(1:k,k,1 ); 在%矩阵的各行元素中设置“列指数”

ladxss=II '; 将%矩阵的无列元素设置为“行指数”

a3=1.//(iiladXSS-1 ); %除以数组。 获取Hilbert矩阵

toc %第三种方法很费时间

输出结果:

电子时间is 1.903465 seconds。

elapsed time is 0.010740秒。

电子时间is 0.037265 seconds。

通过以上分析,需要指出的是矩阵存储器的预分配效果非常好,但并不是所有的循环都可以量化。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。