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

来源:百度知道 编辑:UC知道 时间:2024/09/22 21:36:22
本人将稀疏矩阵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

估计是使用过程中出现什么错误,下面是转换的结果,你可以参考下

%by dynamic
%see also http://www.matlabsky.com
%contact me matlabsky@gmail.com
%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)