如何识别 Matlab 矩阵上特定值的 i,j 位置?

How do I identify the i,j position of a specific value on a Matlab matrix?

例如,我有一个有 400 行和 4000 列的矩阵 A,它主要由零组成,但有三个 1。我确实需要确切地知道这些占据什么位置,比方说 A(30,4000)、A(400,3050) 和 A(50,200)。

只需执行:

[row,col] = find(A);

这将为您提供所有非零条目的行和列位置。 row 将包含所有行位置,col 将包含所有列位置作为 N x 1 向量,其中 N 是非零元素的数量。在您的示例中,上面的输出相当于:

row = [30; 400; 50];
col = [4000; 3050; 200];

你只需要使用find(.)功能。 例如,如果您有:

q=[1 2 3;1 2 4];
[r c]=find(q==2)

在这种情况下,r 包含所需值的行,c 包含所需值的列。