產生稀疏儲存矩陣
sparse可以講完全儲存方式轉換為稀疏儲存方式,那麼,當使用稀疏矩陣時,要先產生完全儲存方式的矩陣,然後再轉換,這顯然是不可取的,MATLAB有自己產生稀疏矩陣的函式spconvert:
B=spconvert(A);A為一個m*3或m*4的矩陣,A的每一列的意義分別為:
(i,1)第i非零元素所在行
(i,2)第i非零元素所在列
(i,3)第i非零元素的實部
(i,4)第i非零元素的虛部
3.帶狀(對角)稀疏矩陣
函式 spdiags
格式 [B,d] = spdiags(A) %從矩陣A中提取所有非零對角元素,這些元素儲存在矩陣B中,向量d表示非零元素的對角線位置。
B = spdiags(A,d) %從A中提取由d指定的對角線元素,並存放在B中。
A = spdiags(B,d,A) %用B中的列替換A中由d指定的對角線元素,輸出稀疏矩陣。
A = spdiags(B,d,m,n) %產生一個m×n稀疏矩陣A,其元素是B中的列元素放
在由d指定的對角線位置上。
例1
>>A = [11 0 13 0
0 22 0 24
0 0 33 0
41 0 0 44
0 52 0 0
0 0 63 0
0 0 0 74];
>>[B,d] = spdiags(A)
B =
41 11 0
52 22 0
63 33 13
74 44 24
d =
-3 %表示B的第1列元素在A中主對角線下方第3條對角線上
0 %表示B的第2列在A的主對角線上
2 %表示B的第3列在A的主對角線上方第2條對角線上
>> B=[1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16];
>> d=[-2 0 1 3];
>> A=spdiags(B,d,4,4);
>> full(A)
ans =
2 7 0 16
0 6 11 0
1 0 10 15
0 5 0 14
產生稀疏儲存矩陣
sparse可以講完全儲存方式轉換為稀疏儲存方式,那麼,當使用稀疏矩陣時,要先產生完全儲存方式的矩陣,然後再轉換,這顯然是不可取的,MATLAB有自己產生稀疏矩陣的函式spconvert:
B=spconvert(A);A為一個m*3或m*4的矩陣,A的每一列的意義分別為:
(i,1)第i非零元素所在行
(i,2)第i非零元素所在列
(i,3)第i非零元素的實部
(i,4)第i非零元素的虛部
3.帶狀(對角)稀疏矩陣
函式 spdiags
格式 [B,d] = spdiags(A) %從矩陣A中提取所有非零對角元素,這些元素儲存在矩陣B中,向量d表示非零元素的對角線位置。
B = spdiags(A,d) %從A中提取由d指定的對角線元素,並存放在B中。
A = spdiags(B,d,A) %用B中的列替換A中由d指定的對角線元素,輸出稀疏矩陣。
A = spdiags(B,d,m,n) %產生一個m×n稀疏矩陣A,其元素是B中的列元素放
在由d指定的對角線位置上。
例1
>>A = [11 0 13 0
0 22 0 24
0 0 33 0
41 0 0 44
0 52 0 0
0 0 63 0
0 0 0 74];
>>[B,d] = spdiags(A)
B =
41 11 0
52 22 0
63 33 13
74 44 24
d =
-3 %表示B的第1列元素在A中主對角線下方第3條對角線上
0 %表示B的第2列在A的主對角線上
2 %表示B的第3列在A的主對角線上方第2條對角線上
例1
>> B=[1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16];
>> d=[-2 0 1 3];
>> A=spdiags(B,d,4,4);
>> full(A)
ans =
2 7 0 16
0 6 11 0
1 0 10 15
0 5 0 14