矩阵的存储方式
- 完全存储方式:
将矩阵的所有元素按列存储,即零元素也要被存储。 - 稀疏存储方式:
只存储矩阵的非零元素的值及其位置,即行号和列号。注意,采用稀疏存储方式时,矩阵元素的存储顺序并没有改变,也是按照列的顺序进行存储。
稀疏存储方式的产生
- 完全存储方式与稀疏矩阵存储方式之间的转化:
- 将矩阵S转化为稀疏存储方式的矩阵A
A = sparse(eye(5))
- 将矩阵A转化为完全存储方式的矩阵S
S =full(A)
2. 直接建立稀疏存储矩阵:
- 生成一个m×n的所有元素都是0的稀疏矩阵
>>sparse(m,n);
- u、v、S是3个等长的向量。S是要建立的稀疏存储矩阵的非零元素,u(i)、v(i)分别是S(i)的行标和列标。
>>sparse(u,v,S);
- A为一个m×3或m×4的矩阵,其每行表示一个非零元素,m是非零元素的个数。每一个非零元素由3个/4个数据描述,如下:
(1) A(i,1)表示第i个非零元素所在的行。
(2) A(i,2)表示第i个非零元素所在的列。
(3) A(i,3)表示第i个非零元素的实部。
(4) A(i,4)表示第i个非零元素的虚部。
若矩阵的全部元素都是实数,都无需第4列。
>> A = [2,2,3;2,1-1;2,4,6];
>> sparse(A)
- 带状稀疏矩阵的稀疏存储
- 带状稀疏矩阵:所有非零元素集中在对角线上的矩阵
- 从带状稀疏矩阵A中提取全部非零对角线元素赋给矩阵B及这些非零对角线的位置向量d。
>>[B,d] = spdiags(A);
- 产生带状稀疏矩阵的稀疏存储矩阵A,其中m、n为原带状稀疏矩阵的行数和列数,矩阵B的第i列即为原稀疏带状矩阵的第i条非零对角线,向量d为原稀疏带状矩阵所有非零对角线的位置。
>>A = spdiags(B,d,m,n); //给出四个参数是为了用这