zoukankan      html  css  js  c++  java
  • Matlab稀疏矩阵

    一、矩阵存储方式

      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.将完全存储方式转化为稀疏存储方式
      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非零元素的虚部

  • 相关阅读:
    iview使用之怎样给Page组件添加跳转按钮
    iview使用之怎样通过render函数在table组件表头添加图标及判断多个状态
    iview使用之怎样通过render函数在tabs组件中添加标签
    在HTML中使用JavaScript
    文档对象模型-DOM
    JavaScript之数组去重
    JavaScript之预编译
    自我总结的一些常问面试题-2018上海
    【知识点】KMP算法详解
    【讲题】Galaxy OJ 树形DP专题
  • 原文地址:https://www.cnblogs.com/hxsyl/p/4901257.html
Copyright © 2011-2022 走看看