MATLAB R2018b学习笔记(9)

系列文章目录

第1章 MATLAB R2018b环境
第2章 MATLAB 数值计算
第3章 MATLAB符号计算
第4章 MATLAB计算的可视化和GUI设计
第5章 MATLAB程序设计
第6章 线性控制系统分析与设计
第7章 Simulink仿真环境
第8章 MATLAB高级应用



第二章、MATLAB数值计算


前言

1个矩阵中如果包含的很多元素值为0,则此矩阵可以只存储少量的非0元素,这个矩阵称为稀疏矩阵(Sparse Matrix)。稀疏矩阵在工程上的应用相当广泛,如电路、图学、有限元素法及偏微分方程等,都会用到稀疏矩阵。


9、稀疏矩阵

9.1稀疏矩阵的建立

在MATLAB中矩阵的存储方式有两种:全元素矩阵和稀疏矩阵。通常,编程时使用的都是全元素矩阵,即矩阵中的每个元素都需要存储,如果每一个元素都是double数据类型(占8字节),则1个mxn 的全元素矩阵,所占用的内存空间是8xmxn(字节)。但在稀疏矩阵中,由于大部分元素都是0,因此只需存储非零元素的下标和元素值,这种特殊的存储方式可以节省大量的存储空间和避免不必要的运算。
全元素矩阵经过计算仍然是全元素矩阵,因此稀疏矩阵的创建需要由用户专门定义。
1.使用sparse函数产生稀疏矩阵
sparse 函数用于创建稀疏矩阵,或将1个全元素矩阵直接转换成为稀疏矩阵。
语法:
sparse(i,j.s,m,n) %直接创建稀疏矩阵
sparse§ %由全元素矩阵P转换为稀疏矩阵
说明: i、j是非0元素的行、列下标;s是非0元素所形成的向量;m、n是s的行、列维数,可省略; i、j、s都是长度相同的向量,生成矩阵的元素s(k)下标分别是i(k)和 j(k);P为全元素矩阵。
在这里插入图片描述
程序说明: sparse的前两个参数向量分别表示稀疏矩阵元素的行和列下标,第一个元素的下标是(1,1),第三个参数向量是稀疏矩阵元素,第一个元素1。
与sparse函数相反,full 函数可将稀疏矩阵转变为全元素矩阵。
语法:
full§ %将稀疏矩阵P转变为全元素矩阵中
2.用spdiags函数创建稀疏矩阵
spdiags 函数用对角线元素构建1个稀疏矩阵。
语法:
spdiags(D,k,m,n)
说明:矩阵D的每一列代表矩阵的对角线向量;k 代表对角线的位置(0代表主对角线,-1代表向下位移一单位的次对角线,1代表向上位移一单位的次对角线,依此类推);m、n分别代表矩阵的行、列维数。
在这里插入图片描述程序分析:可以看出矩阵s的3个非零对角线向量分别是D的3个列向量。主对角线为“321";向上位移一个单位的次对角线为“241”,但其中“2”被移掉了;向上位移两个单位的次对角线为“994”,但其中“99”都被移掉了。

9.2稀疏矩阵的存储空间

在MATLAB中,稀疏矩阵中只存储每个非零元素的下标和元素值。
可以使用whos命令查看内存大小。
MATLAB提供了如下几个返回稀疏矩阵元素个数的函数。nnz:可返回稀疏矩阵的非零元素个数。nnz(b)
nonzeros:返回1个包含所有非零元素的列向量。nonzeros(b)
nzmax:返回最大的非零元素个数,当nnz>nzmax时,MATLAB会动态调整以便增加内存给nzmax,用于储存新增的非零元素。nzmax(b)

9.3稀疏矩阵的运算

MATLAB适用于针对全元素矩阵设计的运算与函数,也都适用于稀疏矩阵的运算。稀疏矩阵的标准数学运算按照以下原则。
(1)如果函数的输入参数是向量或标量,输出的参数为矩阵,则输出参数为全元素矩阵。
(2)如果函数的输入参数是矩阵,输出的参数也为矩阵,则输出参数以输入矩阵的方式表示,即当输入参数为稀疏矩阵时,输出参数也是稀疏矩阵。
(3)如果二元运算的2个操作数中1个是全元素矩阵,另1个是稀疏矩阵,则对于“+”、“_”、“”、“\”的运算结果为全元素矩阵,而“&”、“.”的运算结果为稀疏矩阵。
(4)用“cat”函数或“[ ]”连接混合矩阵将产生稀疏矩阵。
另外,稀疏矩阵的运算主要有:矩阵的排列和重排、矩阵分解、解线性方程组和计算特征值及奇异值。可以在MATLAB命令窗口中输入“help sparfun”命令或使用MATLAB的帮助导航/浏览器窗口,以取得稀疏矩阵的帮助信息。


总结

本次学习的主要内容为稀疏矩阵的建立:
1.使用sparse函数产生稀疏矩阵
2.用spdiags函数创建稀疏矩阵
同时也需要掌握稀疏矩阵的运算规则以及稀疏矩阵的存储规则。
文章内容来自MATLAB实用教程/郑阿奇主编,ISBN 978-7-121-29138-8。若有侵权行为,请联系我自行删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力努力再努力@李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值