稀疏矩阵:是指零元素的个数远远多于非零元素的个数的矩阵
1、矩阵的存储方式
(1)完全存储方式
(2)稀疏存储方式
稀疏存储方式只存储矩阵的非零元素的值及其位置,即行号和列号。
注意,采用稀疏存储方式时,矩阵元素的存储顺序并没有改变,也是按列的顺序进行存储。

2、稀疏存储方式的产生

(1)完全存储方式与稀疏存储方式之间的转化
①A=sparse(S):将矩阵S转化为稀疏存储方式的矩阵A。
②S=full(A):将矩阵A转化为完全存储方式的矩阵S。

>> a = eye(5)a =1     0     0     0     00     1     0     0     00     0     1     0     00     0     0     1     00     0     0     0     1>> a1 = sparse(a)    %按照稀疏矩阵存储方式a1 =(1,1)        1(2,2)        1(3,3)        1(4,4)        1(5,5)        1>> a2 = full(a)   %按照完全存储方式a2 =1     0     0     0     00     1     0     0     00     0     1     0     00     0     0     1     00     0     0     0     1>> whos    %查看变量,可知稀疏矩阵存储方式所占内存远小于完全存储方式所占的内存空间Name      Size            Bytes  Class     Attributesa         5x5               200  double              a1        5x5               128  double    sparse    a2        5x5               200  double

(2)直接建立稀疏存储矩阵

sparse函数的其他调用格式:
①sparse(m,n):
生成一个mx n的所有元素都是零的稀疏矩阵。
②sparse(u,v,S):
其中u、v、S是3个等长的向量。S是要建立的稀疏存储矩阵的非零元素u(i)、v(i)分别是S(i)的行和列下标。

>> a = sparse([1,2,3],[2,1,8],[3,2,-2])   %直接建立稀疏矩阵a =(2,1)        2(1,2)        3(3,8)       -2>> a1 = full(a)a1 =0     3     0     0     0     0     0     02     0     0     0     0     0     0     00     0     0     0     0     0     0    -2>> whosName      Size            Bytes  Class     Attributesa         3x8               120  double    sparse    a1        3x8               192  double              

使用spconvert函数直接建立稀疏存储矩阵,其调用格式为:

B=spconvert(A)
A为一个m×3或mx4的矩阵,其每行表示一个非零元素,m是非零元素的个数。
①A(i,1)表示第i个非零元素所在的行。
②A(i,2)表示第i个非零元素所在的列。
③A(i,3)表示第i个非零元素值的实部。
④A(i,4)表示第i个非零元素值的虚部。
若矩阵的全部元素都是实数,则无须第4列。

>> a = [1,2,3;2,1,8;3,2,-2]   %描述的是一个稀疏矩阵a =1     2     32     1     83     2    -2>> b = spconvert(a)     %转换成为一个稀疏存储矩阵b =(2,1)        8(1,2)        3(3,2)       -2>> whosName      Size            Bytes  Class     Attributesa         3x3                72  double              b         3x2                72  double    sparse

(3)带状稀疏矩阵的稀疏存储
稀疏矩阵有两种基本类型:无规则结构的稀疏矩阵与有规则结构的稀疏矩阵。
带状稀疏矩阵是指所有非零元素集中在对角线上的矩阵。
①[B,d]=spdiags(A)
从带状稀疏矩阵A中提取全部非零对角线元素赋给矩阵B及其这些非零对角线的位置向量d。
②A=spdiags(B,d,m,n)
产生带状稀疏矩阵的稀疏存储矩阵A,其中m、n为原带状稀疏矩阵的行数与列数,矩阵B的弟i列即为原带状稀疏矩阵的第i条非零对角线,向量d为原带状稀疏矩阵所有非零对角线的位置。

>> 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     00    21     0     0    22     00     0    31     0     0    3241     0     0    42     0     00    51     0     0    52     0>> [b,d] = spdiags(a)     %矩阵b为全部非零对角线元素,向量d为非零对角线的位置b =0    11    120    21    220    31    3241    42     051    52     0d =-303>> a = spdiags(b,d,5,6)    %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 x n的稀疏存储单位矩阵。

>> a = speye(4)a =(1,1)        1(2,2)        1(3,3)        1(4,4)        1

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\fx =-0.16670.11112.7222-3.61118.6111

注意,当参与运算的数据对象不全是稀疏存储矩阵时,所得结果是完全存储形式。

2.5 matlab稀疏矩阵相关推荐

  1. MATLAB 稀疏矩阵

    MATLAB 稀疏矩阵 %零元素个数远远多于非零元素的个数的矩阵 %矩阵的存储方式 %稀疏存储方式:只存储矩阵的非零元素的值及其位置,即行号和列号. %A=sparse(S):将矩阵S转化为稀疏存储方 ...

  2. Matlab稀疏矩阵

    SPARSE函数 S = sparse(A)   ----->   把全矩阵转换为稀疏矩阵 S = sparse(i,j,s,m,n,nzmax)   ----->   标准形式 S = ...

  3. matlab如何创建稀疏矩阵,matlab稀疏矩阵创建及实例

    一般有两个命令可以用来创建稀疏矩阵: 1. sparse(较常用) 2. spdiags(主要用于非零元素都是对角线元素的情况) sparse.使用格式如下 A = sparse( i,j,,s,m, ...

  4. matlab矩阵稀疏,Matlab稀疏矩阵

    SPARSE函数 S = sparse(A)   ----->   把全矩阵转换为稀疏矩阵 S = sparse(i,j,s,m,n,nzmax)   ----->   标准形式 S = ...

  5. matlab 稀疏矩阵调用,matlab 稀疏矩阵

    MATLAB的矩阵有两种存储方式,完全存储方式和稀疏存储方式 1.完全存储方式  将矩阵的全部元素按列存储,矩阵中的全部零元素也存储到矩阵中. 2.稀疏存储方式  仅存储矩阵所有的非零元素的值及其位置 ...

  6. Matlab中的稀疏矩阵绘散点图,matlab 稀疏矩阵

    MATLAB的矩阵有两种存储方式,完全存储方式和稀疏存储方式 1.完全存储方式 将矩阵的全部元素按列存储,矩阵中的全部零元素也存储到矩阵中. 2.稀疏存储方式 仅存储矩阵所有的非零元素的值及其位置,即 ...

  7. matlab 稀疏存储,matlab稀疏矩阵存储

    假如说有一个矩阵A =  1, 3, 0, 0 0, 1, 0, 0 0, 0, 3, 0 0, 0, 5, 1 共6个有效点. 通常存储稀疏矩阵用三元组,比如c语言, //为了方便跟后面matlab ...

  8. matlab 稀疏矩阵(sparse matrix)

    参数的设置:spparms() spparms('spumoni', 3);:Set sparse monitor flag to obtain diagnostic output 1. 创建稀疏矩阵 ...

  9. matlab稀疏矩阵三元法,数据结构——稀疏矩阵三元组表示法+算法详解

    (1).目的:对于在实际问题中出现的大型的稀疏矩阵,若用常规分配方法在计算机中储存,将会产生大量的内存浪费,而且在访问和操作的时候也会造成大量时间上的浪费,为了解决这一问题,从而善生了多种解决方案. ...

最新文章

  1. RabbitMQ 入门系列(9)— Python 的 pika 库常用函数及参数说明
  2. 编程能力如何突飞猛进?
  3. 弃用notepad++
  4. LruCache缓存处理及异步加载图片类的封装
  5. Qt pro使用sql之类的需要添加的模块
  6. JS编程建议——7:小心保留字的误用
  7. 使用Identity Server 4建立Authorization Server (1)
  8. 手机modem开发(9)---LTE注网总体流程
  9. 使用手机访问电脑上写的网页
  10. 中国的程序员培训是不是有问题
  11. 华为笔记本软件商店_华为应用市场
  12. 红米S2解BL锁教程申请BootLoader解锁教程
  13. Windows7系统优化,优化达到30多项,速度大幅提升,
  14. 2022年意识科学十大主题焦点与研究进展
  15. 一个便捷的免费图像标注工具AutoSeg
  16. 【阿里聚安全·安全周刊】阿里双11技术十二讲直播预约|AWS S3配置错误曝光NSA陆军机密文件
  17. Nginx流量拦截算法 1
  18. 正月十五吃汤圆CountDownLatch
  19. OCaml for Haskellers
  20. 大势至服务器文件备份系统怎么样,大势至服务器数据备份软件

热门文章

  1. 如何做好项目规划,完成一个保质保量的软件工程!
  2. Android MIPI转LVDS显示屏调试之---SN65DSI84初始化参数的确定(3)
  3. 生活、教育等相关概要
  4. painticon java_新人,关于java的 paintIcon()方法
  5. ASP.NET Core 2 学习笔记(三)中间件
  6. CSS 详细解读定位属性 position 以及参数
  7. eclipse中的debug按钮组突然找不到了,找回方法
  8. JAVA学习笔记--初始化与清理
  9. 使用Dnsmasq加速苹果App Store、iCloud、iTunes、Mac更新等访问速度
  10. 利用vs.net快速开发windows服务(总结)