【问题标题】:Picking out elements of an array according to a specific rule根据特定规则挑选出数组的元素
【发布时间】:2015-07-03 11:03:04
【问题描述】:

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

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

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

2
5
3

有谁知道如何在 MATLAB 中做到这一点?

【问题讨论】:

  • A( find(A(:,1)==1) , 2 ) 会做你想做的事。阅读有关逻辑索引的 Matlab 文档。
  • 你甚至可以删除find,所以它变成A( A(:,1)==1, 2)
  • 哎呀...愚蠢的我指的是逻辑索引,但仍在使用find。 @hbaderts 是对的,忘记 find,但仍然阅读 Matlab 中的逻辑索引。
  • 谢谢!完全按照我的意愿工作。
  • @Hoki 发帖回答?

标签: arrays matlab sorting extract


【解决方案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

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

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

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

产生所需的结果。

【讨论】:

    猜你喜欢
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    相关资源
    最近更新 更多