matlab 稀疏矩阵
来源:互联网 发布:android 启动速度优化 编辑:程序博客网 时间:2024/05/21 14:38
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.1.2稀疏存储方式的产生
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非零元素的虚部
3.带状稀疏存储矩阵
举个例子:
是一个具有稀疏性质的带状矩阵。
首先,找出矩阵的特征数据:
B为三条对角线元素,d为对角线号,-3为主对角线下第三条,0为主对角线,3为主对角线上第三条。 可以利用spdiags产生稀疏矩阵 A=spdiags(B,d,5,6);
也就是spdiags的调用格式 A=spdiags(B,d,m,n);
B为r*p阶矩阵,r=min(m,n),p为原带状矩阵中所有非零对角线的条数,B的第i列即为原带状矩阵的第i条非零对角线。 spdiags的其他调用格式:
[B.d]=spdiags(A);从原带状矩阵提取全部对角线元素赋给B并把对角线位置赋给d;
B=spdiags(A,d);从带状矩阵中提取由d指定的非零对角线元素构成的矩阵;
E=spdiags(B,d,A);将A中d指定的对角线元素由B代替构成新矩阵E。
4.单位矩阵的稀疏矩阵
speye(m,n);产生m*n的稀疏存储单位阵。
将矩阵的全部元素按列存储,矩阵中的全部零元素也存储到矩阵中。 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.1.2稀疏存储方式的产生
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非零元素的虚部
3.带状稀疏存储矩阵
举个例子:
是一个具有稀疏性质的带状矩阵。
首先,找出矩阵的特征数据:
B为三条对角线元素,d为对角线号,-3为主对角线下第三条,0为主对角线,3为主对角线上第三条。 可以利用spdiags产生稀疏矩阵 A=spdiags(B,d,5,6);
也就是spdiags的调用格式 A=spdiags(B,d,m,n);
B为r*p阶矩阵,r=min(m,n),p为原带状矩阵中所有非零对角线的条数,B的第i列即为原带状矩阵的第i条非零对角线。 spdiags的其他调用格式:
[B.d]=spdiags(A);从原带状矩阵提取全部对角线元素赋给B并把对角线位置赋给d;
B=spdiags(A,d);从带状矩阵中提取由d指定的非零对角线元素构成的矩阵;
E=spdiags(B,d,A);将A中d指定的对角线元素由B代替构成新矩阵E。
4.单位矩阵的稀疏矩阵
speye(m,n);产生m*n的稀疏存储单位阵。
0 0
- MATLAB稀疏矩阵
- matlab稀疏矩阵处理
- matlab稀疏矩阵
- matlab 稀疏矩阵
- Matlab稀疏矩阵笔记
- matlab稀疏矩阵存储
- Matlab稀疏矩阵
- Matlab 稀疏矩阵函数
- MATLAB稀疏矩阵理论知识
- matlab稀疏矩阵操作问题
- matlab 稀疏矩阵常用函数
- 稀疏矩阵 sparse 函数 matlab
- matlab 稀疏矩阵的声明
- Matlab基础之稀疏矩阵
- matlab 稀疏矩阵求 特征值
- matlab稀疏矩阵创建及实例
- MATLAB中稀疏矩阵转换与生成
- matlab稀疏矩阵创建及实例
- 论计算机叫兽们与林纳斯·托瓦兹
- 古代密码
- Array to hash of arrays
- Mybatis与Ibatis比较
- 用strcmp比较大小
- matlab 稀疏矩阵
- 南京青奥会志愿者标识物揭晓 4条志愿彩最抢眼
- 黑马程序员 C语言常见的一些注意4
- webBrowser获取验证码内存图片到picturebox中
- 【读书笔记—Hadoop实战】认识hadoop
- 阿里云ubuntu系统图形化访问
- 通过 Autostereograms 案例学习 OpenGL 和 OpenCL 的互操作性
- Scrapy研究探索(七)——如何防止被ban之策略大集合
- VS2010编译QT4.8.4遇到“LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 “问题