根据特定规则挑选数组的元素

Picking out elements of an array according to a specific rule

所以我在 MATLAB 中有一个 100000-by-2 矩阵。我只想提取第二列中的元素,这些元素在第一列中的对应行都具有相同的元素。例如。如果我们有:

A = [1  2
     3  4
     2  6
     1  5
     4  1
     1  3]

然后指定我们希望第二列中的所有元素与 1 作为它们在第一列中的对应值。所以我希望上面的内容变成:

2
5
3

有谁知道如何在 MATLAB 中执行此操作?

Matlab 支持矩阵运算,所以你可以做你想做的事,而不必像其他一些语言那样显式循环遍历整个矩阵。

通过使用逻辑索引,(更多内容请见此处 https://www.mathworks.com/help/matlab/math/matrix-indexing.html?refresh=true) 您可以从矩阵中提取必要的元素。

首先,您要在满足条件的矩阵中创建一个 [0,1] 行数组。

你可以用 A(:,1) == 1

这将产生

1 0 0 1个 0 1

表示第一行、第四行和最后一行满足条件矩阵第一列的元素满足等于1的条件

现在您可以使用它来生成第二列中的元素,只需将它用作原始矩阵的索引即可。

A(A(:,1)==1,2)

生成所需的结果。