所以我在MATLAB中有一个 100000 -by- 2 矩阵。我想只提取第二列中的元素,这些元素在第一列中对应的行都具有相同的元素。例如。如果我们有:
A = [1 2
3 4
2 6
1 5
4 1
1 3]
然后指定我们希望第二列中的所有元素都带有1
作为第1列中的对应值。所以我希望以上内容成为:
2
5
3
有没有人知道如何在MATLAB中执行此操作?
答案 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)
产生所需的结果。