更改矩阵的存储格式,并比较存储要求。
创建一个随机稀疏矩阵。在 MATLAB® 中,稀疏矩阵的显示会忽略所有零,只显示非零元素的位置和值。
rng default %for reproducibility
S = sprand(8,8,0.3)
S =
(2,1) 0.0344
(7,1) 0.4456
(8,1) 0.7547
(2,2) 0.4387
(4,3) 0.7655
(7,3) 0.6463
(8,4) 0.2760
(1,6) 0.9502
(5,6) 0.1869
(8,6) 0.6797
(3,7) 0.3816
(4,7) 0.7952
(8,7) 0.6551
(6,8) 0.4898
(7,8) 0.7094
将矩阵转换为满存储。矩阵的 MATLAB 显示会反映新存储格式。
A = full(S)
A = 8×8
0 0 0 0 0 0.9502 0 0
0.0344 0.4387 0 0 0 0 0 0
0 0 0 0 0 0 0.3816 0
0 0 0.7655 0 0 0 0.7952 0
0 0 0 0 0 0.1869 0 0
0 0 0 0 0 0 0 0.4898
0.4456 0 0.6463 0 0 0 0 0.7094
0.7547 0 0 0.2760 0 0.6797 0.6551 0
比较两种格式的存储要求:
A 存储 64 个双精度值(每个值使用 8 个字节),占用 64⋅8=512 个字节。
S 存储 15 个非零元素以及 24 个说明其位置的整数,总共占用 39⋅8=312 个字节。
whos
Name Size Bytes Class Attributes
A 8x8 512 double
S 8x8 312 double sparse