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...