为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 稀疏矩阵介绍

稀疏矩阵介绍

2013-07-05 13页 ppt 172KB 32阅读

用户头像

is_490489

暂无简介

举报
稀疏矩阵介绍null稀疏矩阵介绍稀疏矩阵介绍 稀疏矩阵 对于一个 n 阶矩阵,通常需要 n2 的存储空间,当 n 很大时,进行矩阵运算时会占用大量的内存空间和运算时间。 Matlab支持稀疏矩阵,只存储矩阵的非零元素,这在矩阵的存储空间和计算时间上都有很大的优点。 在许多实际问题中遇到的大规模矩阵中通常含有大量0元素,这样的矩阵称为稀疏矩阵。 稀疏矩阵及其算法,就是不存储那些“0”元素,也不对它们进行操作,从而节省内存空间和计算时间;稀疏矩阵计算的复杂性和代价仅仅取决于稀疏矩阵的非零元素的个数。稀疏矩阵介绍稀疏矩阵介绍 稀疏矩阵的存储...
稀疏矩阵介绍
null稀疏矩阵介绍稀疏矩阵介绍 稀疏矩阵 对于一个 n 阶矩阵,通常需要 n2 的存储空间,当 n 很大时,进行矩阵运算时会占用大量的内存空间和运算时间。 Matlab支持稀疏矩阵,只存储矩阵的非零元素,这在矩阵的存储空间和计算时间上都有很大的优点。 在许多实际问中遇到的大规模矩阵中通常含有大量0元素,这样的矩阵称为稀疏矩阵。 稀疏矩阵及其算法,就是不存储那些“0”元素,也不对它们进行操作,从而节省内存空间和计算时间;稀疏矩阵计算的复杂性和代价仅仅取决于稀疏矩阵的非零元素的个数。稀疏矩阵介绍稀疏矩阵介绍 稀疏矩阵的存储 在Matlab中有两种存储矩阵的方式:全元素存储(满矩阵)和稀疏存储(稀疏矩阵)。 设一个稀疏矩阵有 nnz 个非零元素,Matlab需要三个数组存储实型的稀疏矩阵,第一个数组存储所有的非零元素,这个数组的长度为 nnz,第二个数组存储非零元素所对应的行标,长度也是 nnz,第三个数组存储指向每一列开始的指针,这个数组的长度为 n。 稀疏存储:Matlab仅存储那些非零元素及其下标。稀疏矩阵介绍稀疏矩阵介绍 创建稀疏矩阵 稀疏矩阵的创建需要用户来决定。用户需要判断在矩阵中是否有大量的零元素,是否需要采用稀疏存储技术。 矩阵的密度定义为矩阵中非零元素的个数除以矩阵中总的元素个数。对于低密度的矩阵,采用稀疏方式存储是一种很好的选择。 如果某个矩阵以稀疏方式存储,则它参与运算的结果也将以稀疏方式存储,除非运算本身是稀疏性消失。稀疏矩阵介绍稀疏矩阵介绍 满矩阵与稀疏矩阵之间的转化例: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稀疏矩阵介绍稀疏矩阵介绍 直接创建稀疏矩阵例: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)) % has the same size as AR=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 entriesS=buchy % 一个内置的稀疏矩阵(邻接矩阵)稀疏矩阵介绍稀疏矩阵介绍 稀疏矩阵的查看 通常的存储信息 非零元素信息。whosnnz(S) % 返回非零元素的个数 nonzeros(S) % 返回列向量,包含所有的非零元素 nzmax(S) % 返回分配给稀疏矩阵中非零项的总的存储空间 查看稀疏矩阵的形状spy(S)稀疏矩阵介绍稀疏矩阵介绍 find函数与稀疏矩阵[i,j,s]=find(S) [i,j]=find(S)返回 S 中所有非零元素的下标和数值,S 可以是稀疏矩阵或满矩阵。稀疏矩阵介绍稀疏矩阵介绍 稀疏矩阵的运算 Matlab中对满矩阵的运算和函数同样可用在稀疏矩阵中。结果是稀疏矩阵还是满矩阵,取决于运算符或者函数及下列几个原则:当函数用一个矩阵作为输入,输出参数为一个标量或者一个给定大小的向量时,输出参数的格式总是返回一个满矩阵形式,如命令 size 等。当函数用一个标量或者一个向量作为输入参数,输出参数为一个矩阵时,输出参数的格式也总是返回一个满矩阵,如命令eye,rand等。还有一些特殊的命令可以得到稀疏矩阵,如命令speye,sprand等。稀疏矩阵运算稀疏矩阵运算对于单参数的其他函数来说,通常返回的结果和参数的形式是一样的,如 diag、max 等。(sparse和full是例外)对于双参数的运算或者函数来说,如果两个参数的形式一样,那么也返回同样形式的结果。在两个参数形式不一样的情况下,除非运算的需要,均以满矩阵的形式给出结果。例:A=eye(4); B=speye(4); S1=A+B; S2=A*B; S3=A\B; S4=A.*B; whos稀疏矩阵运算稀疏矩阵运算在赋值语句的右侧的子矩阵索引保留参数的存储形式,即: 对于 T=S(i,j),若 S 是稀疏矩阵,i,j 是向量或标量,则T 也是稀疏矩阵。例:A=eye(4); B=speye(4); [i,j]=find(A); S1=A(i,j); whos S1=B(i,j); whos A(i,j)=2*B(i,j); whos B(i,j)=A(i,j)^2; whos在赋值语句的左侧的子矩阵索引不会改变左侧矩阵的存储形式。
/
本文档为【稀疏矩阵介绍】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索