Matlab稀疏矩陣

2022-01-24 01:39:00 字數 1125 閱讀 5013

matlab的矩陣有兩種儲存方式,完全儲存方式和稀疏儲存方式

1.完全儲存方式

將矩陣的全部元素按列儲存,矩陣中的全部零元素也儲存到矩陣中。

2.稀疏儲存方式

僅儲存矩陣所有的非零元素的值及其位置,即行號和列號,顯然這對於具有大量零元素的稀疏矩陣來說是十分有效的。

設1 0 0 0

a=   0 5 0 0

2 0 0 7

是具有稀疏矩陣特徵的矩陣,其完全儲存方式是按列儲存的全部12個元素

1,0,2,0,5,0,0,0,0,0,0,7

其稀疏儲存方式如下:

(1,1),1,(3,1),2,(2,2),5,(3,4),7

括號內為元素的行列位置,後面為元素值。

當矩陣非常的「稀疏」時,會有效的節省儲存空間。

1.將完全儲存方式轉化為稀疏儲存方式

a=sparse(s);將s矩陣轉換為稀疏矩陣a;

sparse(m,n);產生m*n的所有元素都為0的稀疏矩陣

sparse(u,v,s);s為建立係數矩陣的非零元素,u(i),v(i)分別為s(i)的行和列下標,s,u,v為等長向量。

[u,v,s]=find(a);返回矩陣a中非零元素的下標和元素,返回值可以作為sparse(u,v,s);的引數

full(a);返回和稀疏儲存方式a對應的完全儲存方式。

例如

x=[2,0,0,0,0;0,0,0,0,0;0,0,0,5,0;0,1,0,0,-1;0,0,0,0,-5]

a=sparse(x)

a=(1,1) 2

(4,2) 1

(3,4) 5

(4,5) -1

(5,5) -5

a就是x的稀疏儲存方式。

2.產生稀疏儲存矩陣

sparse可以講完全儲存方式轉換為稀疏儲存方式,那麼,當使用稀疏矩陣時,要先產生完全儲存方式的矩陣,然後再轉換,這顯然是不可取的,matlab有自己產生稀疏矩陣的函式spconvert:

b=spconvert(a);a為乙個m*3或m*4的矩陣,a的每一列的意義分別為:

(i,1)第i非零元素所在行

(i,2)第i非零元素所在列

(i,3)第i非零元素的實部

(i,4)第i非零元素的虛部

Matlab 12 稀疏矩陣

二 稀疏儲存方式的產生 3.帶狀稀疏矩陣的稀疏儲存方式 4.單位矩陣的稀疏儲存方式 矩陣的每乙個元素都進行儲存 只儲存非0元素的值及其位置,即行號與列號 採用稀疏儲存方式時,矩陣元素的儲存順序並沒改變,也是按列的順序儲存。a sparse s 將矩陣s轉化為稀疏儲存方式的矩陣a s full a 將...

matlab稀疏矩陣建立及例項

一般有兩個命令可以用來建立稀疏矩陣 1.sparse 較常用 2.spdiags 主要用於非零元素都是對角線元素的情況 sparse。使用格式如下 a sparse i,j,s,m,n,nzmax 其實matlab函式sparse的文件中說的比較明白 s sparse i,j,s,m,n,nzmax...

matlab稀疏矩陣建立及例項

一般有兩個命令可以用來建立稀疏矩陣 1.sparse 較常用 2.spdiags 主要用於非零元素都是對角線元素的情況 sparse。使用格式如下 a sparse i,j,s,m,n,nzmax 其實matlab函式sparse的文件中說的比較明白 s sparse i,j,s,m,n,nzmax...