在2D矩阵中查找特定元素的索引

时间:2014-01-03 10:15:23

标签: matlab matrix indexing

我想在2D矩阵中找到特定值的索引。例如,有一个矩阵,如:

A = 
    0 0 8 8 1
    0 6 7 1 1
    5 1 1 1 1

在这里,我希望获得“0”的索引。所以,应该有一个像:

这样的数组
indices = [(1,1) (1,2) (2,1)]

我该怎么做?我试着使用find()函数,但它只返回一个坐标。但是,我想得到所有坐标为“0”。

1 个答案:

答案 0 :(得分:4)

您需要为find使用两个输出:

[row,col] = find(A==0)

您获得的单个输出是线性索引。这是通过向下计数列的元素编号,例如对于你的矩阵,这些是线性指数:

1  4  7  10
2  5  8  11
3  6  9  12

您还可以使用它来定位矩阵中的元素(因此,对于您的示例,零是线性索引124)。但是你要求的是下标索引,因为你需要为find提供2个输出变量。

但是如果你想得到一个与indices完全相同的矩阵,你需要连接我的rowcol矩阵:

indices = [row, col]