matlab稀疏矩阵存储

本文探讨了MATLAB中稀疏矩阵的存储方式,与C语言中的三元组存储进行对比。MATLAB使用三个矩阵存储,包括行索引、值和列头指针,节省了空间。尽管在访问特定元素时,两者内存花费在某些情况下相同,但在大多数实际应用中,由于有效元素数量通常大于列数,MATLAB的方法在实践中表现出更好的效率。
摘要由CSDN通过智能技术生成

假如说有一个矩阵A =  1, 3, 0, 0

                                    0, 1, 0, 0

                                    0, 0, 3, 0

                                    0, 0, 5, 1

共6个有效点。


通常存储稀疏矩阵用三元组,比如c语言,

//为了方便跟后面matlab的对比,下标从1开始
int r[6] = [1, 1, 2, 3, 4, 4];//row index
int v[6] = [1, 2, 1, 3, 5, 1];//value of element
int c[6] = [1, 2, 2, 3, 3, 4];//column index

那么所需要的存储空间是,4 * 6 + 4 * 6 + 8 * 6 = 96 bytes


而在matlab中,存储的是三个矩阵(当然啦,实际上是一片连续的空间)


第1个矩阵r存各个元素的row index,

第2个矩阵v存各个元素的value,这两部分跟上面c语言的一样

第3个矩阵h存各列的头指针(指向第2个矩阵中的各列)+ 1个标志矩阵结束的 flag 指针

(实际上这个flag指针的位置跟在v数组之后,注意是这个指针本身,不是它的内容,它的内容应该是一个定值)

那么所需空间就是4 * ࿰

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值