MATLAB稀疏矩阵

本文详细介绍了MATLAB中稀疏矩阵的存储方式、创建方法、运算规则以及如何进行交换和重新排序。稀疏矩阵对于处理大量零元素的大型矩阵能有效节省内存,MATLAB提供了sparse函数创建稀疏矩阵,以及spdiags、spconvert等工具进行特定操作。此外,还讨论了稀疏矩阵的运算规则,包括与一般矩阵的转换、组合、赋值等,并给出了多个示例来说明稀疏矩阵的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

稀疏矩阵稀疏矩阵是一种特殊类型的矩阵,即矩阵中包括较多的零元素。对于稀疏矩阵的这种特性,在MATLAB中可以只保存矩阵中非零元素及非零元素在矩阵中的位置。在用稀疏矩阵进行计算时,通过消去零元素可以减少计算的时间。7.1 稀疏矩阵的存储方式对一般矩阵而言,MATLAB保存矩阵内的每一个元素,矩阵中的零元素与其他元素一样,需要占用同样大小的内存空间。但对于稀疏矩阵,MATLAB仅存储稀疏矩阵中的非零元素及其对应的位置,其他空余位置只是在访问时以默认的零元素来填充。对于一个含有大量零元素的大型矩阵,采用这种方法可以大大地减少数据占据的内存空间。MATLAB采用3个内部数组来保存元素为实数的稀疏矩阵。稀疏矩阵也可用于存储复数。当稀疏矩阵用于存储复数数据时,需用第4个内部数组保存非零复数的虚部。一个复数非零,是指其实部或虚部至少其中一个不为零。【例2-16】 稀疏矩阵与一般矩阵的内存占用对比。>> M_full = magic(1100); % 创建一个1100´1100 矩阵>> M_full(M_full > 50) = 0; % 将>50的元素设置为0>> M_sparse = sparse(M_full); % 创建稀疏矩阵>> whos Name Size Bytes Class Attributes M_full 1100x1100 9680000 double M_sparse 1100x1100 9608 double sparse 本例中,M_full和 M_sparse两个变量存储的实际上是同一个矩阵,但是二者因为采用的存储形式分别为一般矩阵和稀疏矩阵,所以占用的内存量却相差了近1000倍。因为MATLAB版本不同,操作系统不同(例如32位和64位),内部存储格式也有些变化,但总体上来说占用的内存空间比一般矩阵小很多。7.2 稀疏矩阵的创建MATLAB决不会自动地创建一个稀疏矩阵,这需要用户来决定是否使用稀疏矩阵。在创建一个矩阵前,用户需要根据此矩阵中是否包含较多的零元素,采用稀疏矩阵技术是否有利,来决定是否采用稀疏矩阵的形式。把矩阵中非零元素的个数除以所有元素的个数,就叫做矩阵的密度,密度越小的矩阵采用稀疏矩阵的格式越有利。要将一般矩阵转换为稀疏矩阵,可以使用函数sparse,如s=sparse (A),是指将矩阵A转换为稀疏矩阵。另外,使用函数full则可把稀疏矩阵转换为一般矩阵。【例2-17】 一般矩阵与稀疏矩阵的转换示例。>> A=[0 0 0 1;0 1 0 0;1 2 0 0;0 0 3 0]A = 0 0 0 1 0 1 0 0 1 2 0 0 0 0 3 0>> s=sparse(A)s = (3,1) 1 (2,2) 1 (3,2) 2 (4,3) 3 (1,4) 1>> B=full(s)B = 0 0 0 1 0 1 0 0 1 2 0 0 0 0 3 0从本例的结果中可以看出所有s的非零元素列表及其对应的行列序号。所有非零元素保存在一列中,反映了数据的内部结构。稀疏矩阵的创建一般有以下几种方式。1.直接创建稀疏矩阵使用函数sparse,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值