三元组顺序表表示的稀疏矩阵加法_Matlab入门教程 第 2 章 Matlab矩阵处理之稀疏矩阵...
生活随笔
收集整理的这篇文章主要介绍了
三元组顺序表表示的稀疏矩阵加法_Matlab入门教程 第 2 章 Matlab矩阵处理之稀疏矩阵...
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
2.5 稀疏矩阵
2.5.1 矩阵的存储方式
- 完全存储方式
- 稀疏存储方式
- 稀疏存储方式只存储矩阵的非零元素的值及其位置,即行号和列号。
注意:采用稀疏存储方式时,矩阵元素的存储顺序并没有改变,也是按列的顺序进行存储。
❞举例:
举例2.5.2 稀疏存储方式的产生
(1)完全存储方式与稀疏存储方式之间的转化
- A = sparse(S):将矩阵 S 转化为稀疏存储方式的矩阵 A
- S = full(A):将矩阵 A 转化为完全存储方式的矩阵 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 函数的其他调用格式:
- sparse(m,n):生成一个 m✖️n 的所有元素都是零的稀疏矩阵
- sparse(u,v,S):其中 u、v、S 是 3 个等长的向量。S 是要建立的稀疏存储矩阵的非零元素,u(i)、v(i) 分别是 S(i) 的行和列下标
A =
(2,1) 5
(1,2) 4
(2,4) 7
>> B = full(A)
B =
0 4 0 0
5 0 0 7
使用 spconvert 函数直接建立稀疏存储矩阵,其调用格式为:B = spconvert(A)
A 为一个 m ✖️ 3 或 m ✖️ 4 的矩阵,其每行表示一个非零元素,m 是非零元素的个数
- A(i,1) 表示第 i 个非零元素所在的行
- A(i,2) 表示第 i 个非零元素所在的列
- A(i,3) 表示第 i 个非零元素值的实部
- A(i,4) 表示第 i 个非零元素值的虚部
若矩阵的全部元素都是实数,则无须第 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)带状稀疏矩阵的稀疏存储
稀疏矩阵有两种基本类型:无规则结构的稀疏矩阵与有规则结构的稀疏矩阵
带状稀疏矩阵是指所有非零元素集中在对角线上的矩阵。
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 稀疏矩阵的应用实例
题目>> 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位技术专家面对面20年技术见证,附赠技术全景图
总结
以上是生活随笔为你收集整理的三元组顺序表表示的稀疏矩阵加法_Matlab入门教程 第 2 章 Matlab矩阵处理之稀疏矩阵...的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: python电影推荐算法_电影推荐系统p
- 下一篇: jstat -gcutil 输出结果分析