zoukankan      html  css  js  c++  java
  • MATLAB矩阵——2.5稀疏矩阵

      矩阵的存储方式

    完全存储方式

    稀疏存储方式:稀疏存储方式只存储矩阵的非零元素的值及其位置,即行号和列号

    稀疏存储方式的产生

    (1)完全存储方式与稀疏存储方式之间的转化

    A=sparse(S):将矩阵S转化为稀疏存储方式的矩阵A

    S=full(A):将矩阵A转化为完全存储方式的矩阵S

    >> A=sparse(eye(5))

    A =

      (1,1) 1
      (2,2) 1
      (3,3) 1
      (4,4) 1
      (5,5) 1

    >> B=full(A)

    B =

      1 0 0 0 0
      0 1 0 0 0
      0 0 1 0 0
      0 0 0 1 0
      0 0 0 0 1

    >> whos
        Name   Size      Bytes Class

        A      5x5      84 double array (sparse)
        B      5x5      200 double array

    Grand total is 30 elements using 284 bytes

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

    sparse函数的其他调用格式

    • sparse(m,n):生成一个m x n的所有元素都是零的稀疏矩阵
    • sparse(u,v,S):其中u,v,S是三个等长的向量。S是要建立稀疏存储矩阵的非零元素,u(i),v(i)分别是S(i)的行下标和列下标

    >> A=sparse([1,2,2],[2,1,4],[9,8,7])

    A =

      (2,1)   8
      (1,2)   9
      (2,4)   7

    >> B=full(A)

    B =

      0 9 0 0
      8 0 0 7

    使用spconvert函数直接建立稀疏存储矩阵,其调用格式为B=spconvert(A)

    A是一个m x 3 或m x 4 的矩阵,其每行表示一个非零元素,m是非零元素的个数

    • A(i,1)表示第i个非零元素所在的行
    • A(i,2)表示第i个非零元素所在的列
    • A(i,3)表示第i个非零元素值的实部
    • A(i,4)表示第i个非零元素值的虚部

    若矩阵的全部元素都是实数,则无须第四列


    >> A=[2,2,1;2,1,-1;2,4,3]

    A =

      2    2    1
      2    1   -1
      2    4   3

    >> B=spconvert(A)

    B =

      (2,1)    -1
      (2,2)    1
      (2,4)    3

    (3)带状稀疏矩阵的稀疏存储

    带状稀疏矩阵是指所有非零元素集中在对角线上的矩阵

    [B,d]=spdiags(A):从带状稀疏矩阵A中提取全部非零对角线元素赋给矩阵B,将非零对角线的位置给向量d

    A=spdiags(B,d,m,n):产生带状稀疏矩阵的稀疏存储矩阵A,其中m,n为原带状稀疏矩阵的行数和列数,矩阵B的第i列即为原带状稀疏矩阵的第i条非零对角线,向量d为原带状稀疏矩阵所有非零对角线的元素。

  • 相关阅读:
    prometheus TSDB和外部存储系统
    Prometheus时序数据
    Prometheus简介
    Docker网络
    Ingress
    CRI和多容器运行时
    K8s容器存储接口(CSI)介绍
    EasyNVR视频广场点击视频后切换码流才能播放是什么原因?
    EasyNVR更新H265转H264模块内存增长且显示占用高如何解决?
    EasyNVR拉公网RTSP流失败问题调试和解决
  • 原文地址:https://www.cnblogs.com/Tea1024/p/9126210.html
Copyright © 2011-2022 走看看