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

Arrays 根据特定规则挑选数组的元素,arrays,matlab,sorting,extract,Arrays,Matlab,Sorting,Extract,我在MATLAB中有一个100000乘2的矩阵。我只想提取第二列中的元素,这些元素在第一列中对应的行中都具有相同的元素。例如,如果我们有: A = [1 2 3 4 2 6 1 5 4 1 1 3] 然后指定我们希望第二列中的所有元素在第一列中的相应值为1。因此,我希望上述内容成为: 2 5 3 有人知道如何在MATLAB中实现这一点吗?MATLAB支持矩阵运算,因此您可以做任何您想做的事情,而不必像其他一些语言一样显式地在整个矩

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

A = [1  2
     3  4
     2  6
     1  5
     4  1
     1  3]
然后指定我们希望第二列中的所有元素在第一列中的相应值为
1
。因此,我希望上述内容成为:

2
5
3

有人知道如何在MATLAB中实现这一点吗?

MATLAB支持矩阵运算,因此您可以做任何您想做的事情,而不必像其他一些语言一样显式地在整个矩阵中循环

通过使用逻辑索引(此处有更多相关内容) 您可以从矩阵中提取必要的元素

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

你可以用它来做 A(:,1)=1

这将产生

一, 0 0 1. 0 一,

这意味着第一行、第四行和最后一行满足矩阵第一列中的元素满足其等于1的条件

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

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


生成所需的结果。

A(find(A(:,1)==1),2)
将执行您想要的操作。阅读有关逻辑索引的Matlab文档。您甚至可以删除
find
,使其成为
A(A(:,1)==1,2)
oops。。。愚蠢的我提到了逻辑索引,但仍然使用
find
@hbaderts是对的,忘记了
查找
,但仍然阅读了有关Matlab中的逻辑索引。谢谢!正是我想要的工作方式。@Hoki post作为答案?