淘先锋技术网

首页 1 2 3 4 5 6 7

矩阵的存储方式

完全存储方式

稀疏存储方式:稀疏存储方式只存储矩阵的非零元素的值及其位置,即行号和列号

稀疏存储方式的产生

(1)完全存储方式与稀疏存储方式之间的转化

A=sparse(S):将矩阵S转化为稀疏存储方式的矩阵A

S=full(A):将矩阵A转化为完全存储方式的矩阵S

>> A=sparse(eye(5))

A =

(1,1) 1

(2,2) 1

(3,3) 1

(4,4) 1

(5,5) 1

>> B=full(A)

B =

1 0 0 0 0

0 1 0 0 0

0 0 1 0 0

0 0 0 1 0

0 0 0 0 1

>> whos

Name   Size      Bytes Class

A      5x5      84 double array (sparse)

B      5x5      200 double array

Grand total is 30 elements using 284 bytes

(2)直接建立稀疏存储矩阵

sparse函数的其他调用格式

sparse(m,n):生成一个m x n的所有元素都是零的稀疏矩阵

sparse(u,v,S):其中u,v,S是三个等长的向量。S是要建立稀疏存储矩阵的非零元素,u(i),v(i)分别是S(i)的行下标和列下标

>> A=sparse([1,2,2],[2,1,4],[9,8,7])

A =

(2,1)   8

(1,2)   9

(2,4)   7

>> B=full(A)

B =

0 9 0 0

8 0 0 7

使用spconvert函数直接建立稀疏存储矩阵,其调用格式为B=spconvert(A)

A是一个m x 3 或m x 4 的矩阵,其每行表示一个非零元素,m是非零元素的个数

A(i,1)表示第i个非零元素所在的行

A(i,2)表示第i个非零元素所在的列

A(i,3)表示第i个非零元素值的实部

A(i,4)表示第i个非零元素值的虚部

若矩阵的全部元素都是实数,则无须第四列

>> A=[2,2,1;2,1,-1;2,4,3]

A =

2    2    1

2    1   -1

2    4   3

>> B=spconvert(A)

B =

(2,1)    -1

(2,2)    1

(2,4)    3

(3)带状稀疏矩阵的稀疏存储

带状稀疏矩阵是指所有非零元素集中在对角线上的矩阵

[B,d]=spdiags(A):从带状稀疏矩阵A中提取全部非零对角线元素赋给矩阵B,将非零对角线的位置给向量d

A=spdiags(B,d,m,n):产生带状稀疏矩阵的稀疏存储矩阵A,其中m,n为原带状稀疏矩阵的行数和列数,矩阵B的第i列即为原带状稀疏矩阵的第i条非零对角线,向量d为原带状稀疏矩阵所有非零对角线的元素。