三元组顺序表表示的稀疏矩阵加法_Matlab入门教程 第 2 章 Matlab矩阵处理之稀疏矩阵...
生活随笔
收集整理的這篇文章主要介紹了
三元组顺序表表示的稀疏矩阵加法_Matlab入门教程 第 2 章 Matlab矩阵处理之稀疏矩阵...
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
2.5 稀疏矩陣
2.5.1 矩陣的存儲方式
- 完全存儲方式
- 稀疏存儲方式
- 稀疏存儲方式只存儲矩陣的非零元素的值及其位置,即行號和列號。
注意:采用稀疏存儲方式時,矩陣元素的存儲順序并沒有改變,也是按列的順序進行存儲。
?舉例:
舉例2.5.2 稀疏存儲方式的產(chǎn)生
(1)完全存儲方式與稀疏存儲方式之間的轉(zhuǎn)化
- A = sparse(S):將矩陣 S 轉(zhuǎn)化為稀疏存儲方式的矩陣 A
- S = full(A):將矩陣 A 轉(zhuǎn)化為完全存儲方式的矩陣 S
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?????Attributes
??A?????????5x5???????????????128??double????sparse????
??B?????????5x5???????????????200??double???????????
(2)直接建立稀疏存儲矩陣
sparse 函數(shù)的其他調(diào)用格式:
- sparse(m,n):生成一個 m??n 的所有元素都是零的稀疏矩陣
- sparse(u,v,S):其中 u、v、S 是 3 個等長的向量。S 是要建立的稀疏存儲矩陣的非零元素,u(i)、v(i) 分別是 S(i) 的行和列下標(biāo)
A?=
???(2,1)????????5
???(1,2)????????4
???(2,4)????????7
>>?B?=?full(A)
B?=
?????0?????4?????0?????0
?????5?????0?????0?????7
使用 spconvert 函數(shù)直接建立稀疏存儲矩陣,其調(diào)用格式為:B = spconvert(A)
A 為一個 m ?? 3 或 m ?? 4 的矩陣,其每行表示一個非零元素,m 是非零元素的個數(shù)
- A(i,1) 表示第 i 個非零元素所在的行
- A(i,2) 表示第 i 個非零元素所在的列
- A(i,3) 表示第 i 個非零元素值的實部
- A(i,4) 表示第 i 個非零元素值的虛部
若矩陣的全部元素都是實數(shù),則無須第 4 列
>>?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)帶狀稀疏矩陣的稀疏存儲
稀疏矩陣有兩種基本類型:無規(guī)則結(jié)構(gòu)的稀疏矩陣與有規(guī)則結(jié)構(gòu)的稀疏矩陣
帶狀稀疏矩陣是指所有非零元素集中在對角線上的矩陣。
image-20201015151353520>>?A?=?[11,0,0,12,0,0;0,21,0,0,22,0;0,0,31,0,0,32;41,0,0,42,0,0;0,51,0,0,52,0]A?=
????11?????0?????0????12?????0?????0
?????0????21?????0?????0????22?????0
?????0?????0????31?????0?????0????32
????41?????0?????0????42?????0?????0
?????0????51?????0?????0????52?????0
>>?[B,d]?=?spdiags(A)
B?=
?????0????11????12
?????0????21????22
?????0????31????32
????41????42?????0
????51????52?????0
d?=
????-3
?????0
?????3
>>?A?=?spdiags(B,d,5,6)
A?=
???(1,1)???????11
???(4,1)???????41
???(2,2)???????21
???(5,2)???????51
???(3,3)???????31
???(1,4)???????12
???(4,4)???????42
???(2,5)???????22
???(5,5)???????52
???(3,6)???????32
(4)單位矩陣的稀疏矩陣
- Speye(m,n) 返回一個 m × n 的稀疏存儲單位矩陣
ans?=
???(1,1)????????1
???(2,2)????????1
???(3,3)????????1
2.5.3 稀疏矩陣的應(yīng)用實例
題目>>?kf1?=?[1;1;2;1;0];>>?k0?=?[2;4;6;6;1];
>>?k1?=?[0;3;1;4;2];
>>?B?=?[kf1,k0,k1];
>>?d?=?[-1;0;1];
>>?A?=?spdiags(B,d,5,5);
>>?f?=?[0;3;2;1;5];
>>?x?=?A\f
x?=
???-0.1667
????0.1111
????2.7222
???-3.6111
????8.6111
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的三元组顺序表表示的稀疏矩阵加法_Matlab入门教程 第 2 章 Matlab矩阵处理之稀疏矩阵...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python电影推荐算法_电影推荐系统p
- 下一篇: jstat -gcutil 输出结果分析