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