假设我有一个稀疏矩阵Sparstica
,它是几个其他稀疏矩阵的垂直连接。当我输入Sparstica(:)
时,我会得到一个非零元素的列表。在左列中,将是元素的索引,在右列中将是非零元素。
如何在中间n-2
块(n
稀疏块矩阵中)操纵每个其他稀疏块矩阵的第i和第j个非零元素?
附加:为了澄清我对每个其他稀疏矩阵的第i个和第j个元素的意思,假设我有
Sparstica = [A_1; A2; A_3; ......; A_N]
这是从vertcat
创建的。现在我需要从A_2
到A_{N-1}
取第i和第j个,比如每隔一个稀疏矩阵的第3个和第5个非零元素(我知道实际上不允许使用符号,但仅用于演示目的)。如果可能的话,我想在没有的情况下使用for循环完成此。
答案 0 :(得分:4)
您可以使用find
找到非零元素:
>> A = speye(3)
A =
(1,1) 1
(2,2) 1
(3,3) 1
>> I = find(A ~= 0)
I =
1
5
9
如果您需要行/列格式的索引,请使用ind2sub
:
>> [X, Y] = ind2sub(size(A), I)
X =
1
2
3
Y =
1
2
3