Matlab之sparse(),full()函数的用法

本文均为博主按个人理解,通过Matlab运行进行的简单经验总结,因此可能存在失误之处,欢迎各位指正!

上篇转载的文章matlab之稀疏矩阵(sparse matrix)中,我们解释了存储稀疏矩阵的两种方式full storage organizationsparse storage organization,本篇我们继续探讨Matlab中sparse()和full()函数的应用。

1 sparse(A)

A=[1 2 3;4 5 6;7 8 9];     %输入矩阵A
B=sparse(A);               %矩阵A的sparse storage organization存储形式
C=full(B);                 %将B重新转换为full storage organization存储形式

输出结果发现C=A.
2 sparse(i,j,v)
以i,j的元素作为索引,以v的值作为相应值而构造出的稀疏矩阵。

i=[1,2;3,4];j=[2,3;4,1];   %输入矩阵i,j
v=[10,3;5,7];              %矩阵v所含元素的个数必须和i,j的相同
B=sparse(i,j,v);
C=full(B);                          

注意,只需要i,j,v包含的元素个数相同即可,如果变成i,j,v变成向量形式的话,影响的仅仅是读取i,j,v包含的元素的顺序(矩阵元素读取顺序为按列自上至下读取)。

i=[1,2;3,4];j=[2,3,4,1];   %把j换成向量形式
v=[10,3,5,7];              %把v换成向量形式
B=sparse(i,j,v);
C=full(B); 

观察以上两个结果。
注意,当v中有几个数值的索引(即对应的i,j元素组合)相同时,则把这几个数值直接相加。且由于是按照稀疏矩阵形式存储,所以输出结果对于v中的零值不予显示,但仍然存在记忆。

i=[1,2,2,4];j=[2,2,2,1];   %把j换成向量形式
v=[10,3,5,0];              %v的最后元素为0
B=sparse(i,j,v);
[i;j;v]                    %拼接矩阵,以便与C对比观察
C=full(B); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值