Arrays 根据特定规则挑选数组的元素
我在MATLAB中有一个100000乘2的矩阵。我只想提取第二列中的元素,这些元素在第一列中对应的行中都具有相同的元素。例如,如果我们有: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支持矩阵运算,因此您可以做任何您想做的事情,而不必像其他一些语言一样显式地在整个矩
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作为答案?