第十二讲:Malab稀疏矩阵介绍.pptVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Matlab 稀疏矩阵操作 稀疏矩阵介绍 稀疏矩阵存储 创建稀疏矩阵 满矩阵与稀疏矩阵 直接创建稀疏矩阵 利用文件创建稀疏矩阵 带状稀疏矩阵的创建 其它稀疏矩阵创建函数 查看稀疏矩阵 find 函数与稀疏矩阵 稀疏矩阵的运算 稀疏矩阵的运算 稀疏矩阵的运算 * * 对于一个 n 阶矩阵,通常需要 n2 的存储空间和正比于n3的计算时间,当 n 很大时,进行矩阵运算时会占用大量的内存空间和运算时间。 Matlab 支持稀疏矩阵,只存储矩阵的非零元素,这在矩阵的存储空间和计算时间上都有很大的优点。 在许多实际问题中遇到的大规模矩阵中通常含有大量 0 元素,这样的矩阵称为稀疏矩阵。 稀疏矩阵及其算法:不存储那些 0 元素,也不对它们进行操作,从而节省内存空间和计算时间,稀疏矩阵计算的复杂性和代价仅仅取决于稀疏矩阵的非零元素的个数。 稀疏矩阵 Matlab 的两种存储矩阵的方式: 全元素存储(满矩阵)和稀疏存储(稀疏矩阵) 设一个m*n的稀疏矩阵有 nnz 个非零元素,Matlab 需要三个数组存储实型的稀疏矩阵,第一个数组存储所有的非零元素,这个数组的长度为 nnz,第二个数组存储非零元素所对应的行标,长度也是 nnz,第三个数组存储指向每一列开始的指针,这个数组的长度为 n。这个矩阵的存储包含nnz个浮点数和nnz+n个整数. 稀疏存储:仅存储非零元素及其下标 稀疏矩阵的存储 稀疏矩阵的创建需要用户来决定。用户需要判断在矩阵中是否有大量的零元素,是否需要采用稀疏存储技术。 矩阵的密度定义为矩阵中非零元素的个数除以矩阵中总的元素个数。对于低密度的矩阵,采用稀疏方式存储是一种很好的选择。 如果某个矩阵以稀疏方式存储,则它参与运算的结果也将以稀疏方式存储,除非运算本身使得稀疏性消失。 创建稀疏矩阵 例: S=sparse(A)%将以任何形式存储的矩阵转换为稀疏矩阵形式。 A=full(S) )%将以任何形式存储的矩阵转换为满矩阵(全元素)形式。 A=[0 0 5 0; 3 0 3 0 ; 0 0 0 1; 0 4 3 0] S=sparse(A) whos 满矩阵与稀疏矩阵之间的转化 Full(S) 例: S=sparse(i,j,s,m,n) 其中 i 和 j 分别是矩阵非零元素的行和列指标向量,s 是非零元素值向量,m、n 分别是矩阵的行数和列数 S2=sparse([1 2 2 3 4 4],[3 1 3 4 2 3],... [5 3 3 1 4 3],4,4) 直接创建稀疏矩阵 例:设文本文件 T.txt 中有三列内容,第一列是一些行下标,第二列是列下标,第三列是非零元素值。 1 3 5 2 1 3 2 3 3 3 4 1 4 2 4 4 3 3 利用 load 和 spconvert 函数可以从包含一系列下标和非零元素的文本文件中输入稀疏矩阵。 load T.txt S=spconvert(T) 利用文件创建稀疏矩阵 例: S=spdiags(B,d,m,n) 其中 m 和 n 分别是矩阵的行数和列数;d 是长度为 p 的整数向量,它指定矩阵 S 的对角线位置;B 是全元素矩阵,用来给定 S 对角线位置上的元素,行数为 min(m,n),列数为 p 。 B=rand(4,2); S3=spdiags(B,[0 1],4,4) 带状稀疏矩阵的创建 S=speye(m,n) S=speye(size(A)) R=sprand(S) % R has the same sparsity structure as S S=sprand(m,n,density) % random, m-by-n, sparse matrix with % approximately density*m*n uniformly % distributed nonzero entries S=bucky % 一个内置的稀疏矩阵(邻接矩阵) 其它稀疏矩阵创建函数 通常的存储信息 非零元素信息。 whos nnz(S) % 返回非零元素的个数 nonzeros(S) % 返回列向量,包含所有的非零元素 nzmax(S) % 返回分配给稀疏矩阵中非零项的总的存储空间 查看稀疏矩阵的形状 spy(S) 查看稀疏矩阵 [i,j,s]= find(S) [i,j]= find(S) 返回 S 中所有非零元素的下标和数值,S 可以是稀疏矩阵或满矩阵。 find 函数与稀疏矩阵 Matlab 中对满矩阵的运算和函数同样可用在稀疏矩阵中。结果是稀疏矩阵还是满矩阵,取决于运算符或者函数及下列几个原则: 当函数用一个矩阵作为输入参数,输出参数为一个标量

文档评论(0)

139****3928 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档