matlab 利用sparse产生 稀疏矩阵问题

本人将稀疏矩阵A 通过sparse方法生成 矩阵B 。按理说B矩阵括号里面应该对应的是 A矩阵中非零元素的行列标,但是为什么变换后矩阵 B括号里的列标都为3 呢?请高人指点!

A:
1 1 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1

B:
(7244,3) 1
(7245,3) 1
(7246,3) 1
(7247,3) 1
(7248,3) 1
(7249,3) 1
(7250,3) 1
(7251,3) 1
(7252,3) 1
(7253,3) 1
(7254,3) 1
(7255,3) 1
(7256,3) 1
(7257,3) 1

首先你可以通过help sparse来查看MATLAB内置的帮助。它的讲解如下:
S = sparse(A)
将矩阵A转化为稀疏矩阵形式,即矩阵A中任何0元素被去除,非零元素及其下标组成矩阵S。如果A本身是稀疏的,sparse(S)返回S。
S = sparse(i,j,s,m,n,nzmax)
由向量i,j,s生成一个m*n的含有nzmax个非零元素的稀疏矩阵S,并且有 S(i(k),j(k)) = s(k)。向量 i,j 和 s 有相同的长度。对应对向量i和j的值,s 中任何零元素将被忽略。 s 中在 i 和 j 处的重复值将被叠加。 注意:如果i或j任意一个大于最大整数值范围,2^31-1, 稀疏矩阵不能被创建。
S = sparse(i,j,s,m,n)
用 nzmax = length(s)
S = sparse(i,j,s)
使m = max(i) 和 n = max(j),在s中零元素被移除前计算最大值,[i j s]中其中一行可能为[m n 0]。
S = sparse(m,n)
sparse([],[],[],m,n,0)的缩写,生成一个m*n的所有元素都是0的稀疏矩阵。
注意:稀疏矩阵适合0非常多的情况,否者效率会比较低。
具体使用时,选择合适的调用形式。
希望采纳,设置为满意答案,谢谢。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-04-09
估计是使用过程中出现什么错误,下面是转换的结果,你可以参考下

%by dynamic
%see also http://www.matlabsky.com
%contact me [email protected]
%2009.2.
%

>> a=ones(2);b=1;c=ones(4);
>> A=blkdiag(a,a,b,c,a,b,b,b)

A =

1 1 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1

>> A2=sparse(A)

A2 =

(1,1) 1
(2,1) 1
(1,2) 1
(2,2) 1
(3,3) 1
(4,3) 1
(3,4) 1
(4,4) 1
(5,5) 1
(6,6) 1
(7,6) 1
(8,6) 1
(9,6) 1
(6,7) 1
(7,7) 1
(8,7) 1
(9,7) 1
(6,8) 1
(7,8) 1
(8,8) 1
(9,8) 1
(6,9) 1
(7,9) 1
(8,9) 1
(9,9) 1
(10,10) 1
(11,10) 1
(10,11) 1
(11,11) 1
(12,12) 1
(13,13) 1
(14,14) 1本回答被提问者采纳
第2个回答  2015-07-30
具体问题是什么?