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

时间:2015-07-03 11:03:04

标签: arrays matlab sorting extract

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

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

然后指定我们希望第二列中的所有元素都带有1作为第1列中的对应值。所以我希望以上内容成为:

2
5
3

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

1 个答案:

答案 0 :(得分:1)

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)

产生所需的结果。

相关问题