1、稀疏矩阵定义及存储
稀疏矩阵即含0较多的矩阵。
MATLAB为了节省内存空间,对与实数稀疏矩阵采用3个内部数组来保存非零元素及其对应的位置。
对与复数稀疏矩阵,采用第4个内部数组保存非0复数的虚部。

说明:M_full和M_sparse其实是同一个矩阵,但是内存却相差了一万倍,可怕。

2、稀疏矩阵的创建
MATLAB不会自己创建稀疏矩阵。一般由用户根据商来确定是否要采用稀疏矩阵。
商也叫密度:非零个数比矩阵总体元素数。密度越小,用稀疏矩阵越有利。
spares()将矩阵变成稀疏矩阵,full()则将稀疏矩阵变成一般矩阵。

2.1 直接创建稀疏矩阵
使用spares(i,j,s,m,n)函数,i,j分别是行列向量,s为非零值向量,m,n为行列数。
2.2 对角元素中创建稀疏矩阵
函数spdiags(B,d,m,n),B矩阵中的数作为值,d向量作为指定m*n矩阵的对角线
如: b=[1 2 3;4 5 6;7 8 9;10 11 12]
spdiags(b,[-3 0 2],7,4)

2.3 从外部文件导入稀疏矩阵
1.用文本创建一个三列或四列(复数)的.dat文件
2.将该文件放在当前MATLAB工作目录下
3.load name.dat %将文件导入
4.使用函数spconvert(name),将其转换为稀疏矩阵。

3 稀疏矩阵运算原则

4 稀疏矩阵的交换与重新排序
4.1、稀疏矩阵的行交换与列交换有以下两种方法
1、有交换矩阵P,对稀疏矩阵S进行行行交换,可以表示为PS,进行列交换可以表示为PS’
2、有一个交换矢量p,p为一个矢量(1到n的自然数的排列,如p=[1 2 4 3]),对稀疏矩阵的行行交换可以表示为S(p,:),列交换可以表示为S(:,p)。

也可以对矩阵S的某一行进行列交换(S(n,p)),或对某一列进行行行交换(S(p,n))。注意返回的是向量。

对稀疏矩阵的行行交换或列列交换,返回的仍然是稀疏矩阵。交换方法是与一般矩阵相同。
4.2 对稀疏矩阵的列进行重新排序
好处:有时可以使矩形的分解速度更快。
方法:最简单的方法是根据矩阵列中非零元素的个数对列进行排序。使用方法colperm,该方法接收一个矩阵,计算矩阵每一列的非零元素的个数,按非零元素个数从小到大进行排列以后,返回各列的顺序,返回的就是交换矢量。
如:S矩阵,每一列的非零元素的个数分别为 2 2 3 2则返回p=[1 2 4 3]
再:B=S(:,p)%对矩阵S按非零元的个数升序排列。

5 稀疏矩阵视图
MATLAB提供了函数spy,用于观察稀疏矩阵非零元素的分布视图。

MATLAB之稀疏矩阵相关推荐

  1. 【MATLAB】稀疏矩阵(含有大量0元素的矩阵)

    1.稀疏矩阵的储存方式 对于稀疏矩阵,MATLAB仅储存矩阵所有非零元素的值及其位置(行号和列号). 2.稀疏矩阵的生成 1)利用sparse函数从满矩阵转换得到稀疏矩阵 函数名称 表示意义 spar ...

  2. 初始化稀疏矩阵 matlab,访问稀疏矩阵 - MATLAB Simulink - MathWorks 中国

    稀疏矩阵运算中的索引 由于稀疏矩阵是以压缩稀疏列格式存储的,因此为稀疏矩阵进行索引的相关成本与为满矩阵进行索引的相关成本不同.在只需更改稀疏矩阵中的若干元素时,这类成本可忽略不计,因此,在这类情况下, ...

  3. matlab对稀疏矩阵求特征值,使用ARPACK查找稀疏矩阵的特征向量和特征值(称为PYTHON,MATLAB或FORTRAN子例程)...

    几天前我问了一个如何找到大稀疏矩阵的特征值的问题 . 我没有答案,所以我决定描述一个潜在的解决方案 . One question remains: Can I use the python imple ...

  4. Matlab与线性代数 -- 稀疏矩阵的图形显示

    本文详细说明了Matlab中稀疏矩阵可视化的过程.

  5. matlab产生一个稀疏向量,Matlab中的稀疏矩阵向量乘法比Python快吗?

    编辑:请参阅this question,在那里我学习了如何使用Numba在Python中并行化稀疏矩阵向量乘法,并能够与Matlab打交道.在 原题: 我发现在Matlab中稀疏矩阵向量乘法比Pyth ...

  6. matlab需要多大运存_提高matlab运行效率

    用过Matlab的人都知道,Matlab是一种解释性语言,存在计算速度慢的问题,为了提高程序的运行效率,matlab提供了多种实用工具及编码技巧. 1. 循环矢量化 Matlab是为矢量和矩阵操作而设 ...

  7. matlab都有什么接口,介绍MATLAB与C++的几种接口方式

    matlab调用c++,应该用mex把cpp编译成 .mex文件供MATLAB在命令行方式下调用吧 看下面这片文章 文章: 摘自北京理工大学BBS MATLAB是什么东东?不用我多说了,大批的高手会告 ...

  8. matlab 矢量化,matlab矢量化编程简要

    一.基本技术 1)MATLAB索引或引用(MATLAB Indexing or Referencing) 在MATLAB中有三种基本方法可以选取一个矩阵的子阵.它们分别是下标法,线性法和逻辑法(sub ...

  9. MATLAB调用C/C++函数的方法

    http://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-9510581626.24.ZO6sko&id=43401674106 精通MATLAB ...

最新文章

  1. MFC 学习的基本概念
  2. VTK修炼之道46:图形基本操作进阶_三角网格体积、表面积、测地距离、包围盒
  3. ajax实现浏览器前进后退-location.hash与模拟iframe
  4. 信奥中的数学:孙子定理 中国剩余定理
  5. tyvj1202 数数食物链
  6. 自然语言处理之基于biLSTM的pytorch立场检测实现
  7. python远程同步文件_Python实现的远程文件自动打包并下载功能示例
  8. ups容量计算和配置方法_UPS电源选择与电池容量计算
  9. AI-终极算法-遗传算法
  10. 7教程统计意义_极少人知道的SPSS数据拆分技巧——「杏花开生物医药统计」
  11. 联想Lenovo手机平板安装谷歌服务框架Google, Play商店,安装套件GMS
  12. Android 修改wifi阀值,6种简单方法使WiFi网络提速
  13. 使用GDAL实现DEM的地貌晕渲图(三)
  14. 虎胆熊威2中文版体验
  15. Gym 101778G
  16. [数据分析] 逻辑树分析方法
  17. 侏儒、精灵、巫师和国王
  18. NKOJ 4043 (CQOI 2017) 老C的键盘 (树形DP)
  19. 杀狗问题(帽子问题)
  20. 真相:为什么投简历总是没回音?

热门文章

  1. 在html中超链接_怎么添加html网页的超链接?
  2. WEB开发36式打狗棒法
  3. 0.3 - 非标设备常用材料
  4. Java进阶之路——从初级程序员到架构师
  5. 将本地音频文件上传到微信公众号服务器获得文件media_id
  6. 解密“抗风险神器”:量化中性是如何赚钱的
  7. 中文简体繁体之间的转换
  8. 最新京东金融Vue组件化实战视频教程(完整)
  9. 基于Yolov5的吸烟行为识别检测
  10. 闪烁之光为什么闪退_闪烁之光抖音版