Matlab基础之稀疏矩阵
2016-09-28 16:50
381 查看
前言:
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),括号内为元素的行列位置,后面为元素值。 当矩阵非常的“稀疏”时,会有效的节省存储空间。
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有自己产生稀疏矩阵的
1.speye(c):产生c*c单位矩阵。且该单位矩阵里有且只有c个1,其余元素均为0.
>>speye(4)
ans =
(1,1) 1
(2,2) 1
(3,3) 1
(4,4) 1
>> full(ans)
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
2.函数spconvert:
B=spconvert(A);A为一个m*3或m*4的矩阵,A的每一列的意义分别为:
比如:X=[2,1,1,1;2,2,2,2;3,3,5,3],执行B=spconvert(X)后:
X =
2 1 1 1
2 2 2 2
3 3 5 3
B =
(2,1) 1.0000 + 1.0000i
(2,2) 2.0000 + 2.0000i
(3,3) 5.0000 + 3.0000i
(i,1)第i非零元素所在行
(i,2)第i非零元素所在列
(i,3)第i非零元素的实部
(i,4)第i非零元素的虚部
c=[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]
c =
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
2.find(A):找出A矩阵非零元素的位置;
>> [row,col,v]=find(eye(3))
row =
1
2
3
col =
1
2
3
v =
1
1
1
3.spy(A):画出矩阵非零数的位置图
Matlab。。,好烦啊,导师乱指挥!
以后用到稀疏表示的东东,希望和大家一起学习。。
一、稀疏矩阵
在矩阵中,若数值为0的元素数目远远多于非0元素的数目时,则称该矩阵为稀疏矩阵;与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。定义非零元素的总数比上矩阵所有元素的总数为矩阵的稠密度。二、存储方式
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有自己产生稀疏矩阵的
1.speye(c):产生c*c单位矩阵。且该单位矩阵里有且只有c个1,其余元素均为0.
>>speye(4)
ans =
(1,1) 1
(2,2) 1
(3,3) 1
(4,4) 1
>> full(ans)
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
2.函数spconvert:
B=spconvert(A);A为一个m*3或m*4的矩阵,A的每一列的意义分别为:
比如:X=[2,1,1,1;2,2,2,2;3,3,5,3],执行B=spconvert(X)后:
X =
2 1 1 1
2 2 2 2
3 3 5 3
B =
(2,1) 1.0000 + 1.0000i
(2,2) 2.0000 + 2.0000i
(3,3) 5.0000 + 3.0000i
(i,1)第i非零元素所在行
(i,2)第i非零元素所在列
(i,3)第i非零元素的实部
(i,4)第i非零元素的虚部
四、带状稀疏存储矩阵
example:c=[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]
c =
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
五、其他函数介绍
1.issparse(A):判断A是否为系数矩阵,是则返回1;2.find(A):找出A矩阵非零元素的位置;
>> [row,col,v]=find(eye(3))
row =
1
2
3
col =
1
2
3
v =
1
1
1
3.spy(A):画出矩阵非零数的位置图
相关文章推荐
- MATLAB图像处理基础知识3 稀疏矩阵变全矩阵full 保存矩阵到txt文件save
- MATLAB图像处理基础知识3 稀疏矩阵变全矩阵full 保存矩阵到txt文件save
- MATLAB基础四——稀疏矩阵
- matlab计算基础——矩阵与稀疏矩阵(1)
- matlab稀疏矩阵存储
- 新手上路,matlab基础(3)-matlab中的矩阵
- 一步一步复习数据结构和算法基础-稀疏矩阵基本操作
- matlab稀疏矩阵操作问题
- 【Matlab】sparse函数和full函数(稀疏矩阵和非稀疏矩阵转换)
- matlab稀疏矩阵创建及实例
- matlab稀疏矩阵创建及实例
- matlab 稀疏矩阵常用函数
- 矩阵论基础 2.5 用Matlab实现矩阵的基本运算
- 稀疏矩阵 sparse 函数 matlab
- matlab 稀疏矩阵
- matlab——sparse函数和full函数(稀疏矩阵和非稀疏矩阵转换)
- matlab稀疏矩阵创建及实例
- 新手上路,matlab基础(3)-matlab中的矩阵
- MATLAB基础4-特殊矩阵建立
- 【Matlab】sparse函数和full函数(稀疏矩阵和非稀疏矩阵转换)