在Matlab中操作稀疏矩阵

时间:2013-03-14 07:10:09

标签: matlab indexing block sparse-matrix

假设我有一个稀疏矩阵Sparstica,它是几个其他稀疏矩阵的垂直连接。当我输入Sparstica(:)时,我会得到一个非零元素的列表。在左列中,将是元素的索引,在右列中将是非零元素。

如何在中间n-2块(n稀疏块矩阵中)操纵每个其他稀疏块矩阵的第i和第j个非零元素?


附加:为了澄清我对每个其他稀疏矩阵的第i个和第j个元素的意思,假设我有

  

Sparstica = [A_1; A2; A_3; ......; A_N]

这是从vertcat创建的。现在我需要从A_2A_{N-1}取第i和第j个,比如每隔一个稀疏矩阵的第3个和第5个非零元素(我知道实际上不允许使用符号,但仅用于演示目的)。如果可能的话,我想在没有的情况下使用for循环完成此

1 个答案:

答案 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