将值与值向量进行比较,并 return Matlab 中的匹配项

Compare a value to a vector of values and return the match in Matlab

任何人都可以告诉我如何 return 匹配值与 MATLAB 中的值和列向量之间的比较。所以假设要比较的值是 200,我得到一个列向量:

a = [21; 32; 433; 54; 42;]

我想找到向量 a return 中的哪个元素与比较匹配 200 <= a

如果我这样做:x = any(200 <= a) 根据条件是否满足,x 的值将是 01。但是如果我想知道 vector 'a' 中的哪个值满足条件,我怎么才能找到呢?在这种情况下,元素 3 和值为 433

您可以使用 find 来获取满足条件的索引向量。

以下命令returns找到符合条件的索引处的值。

a(find(a >= 200))

ans =

     433

同样,a <= 200:

a(find(a <= 200))

ans =

    21
    32
    54
    42

正如@David 在评论中指出的那样,您不需要使用 find 命令,但它的工作原理是一样的。

使用find如下:

positions = find(200<=a); %// all positions satisfying condition
values = a(positions); %// values at those positions

其他答案都不错,但是find就没必要了。只要有可能,请改用逻辑索引。看到 200 <= a 对我来说有点奇怪。我喜欢看到左边的变量,所以这和说 a >= 200 是一样的。无论如何,你可以这样做:

vals = a(200 <= a);

200 <= a 将 return 一个逻辑向量,其中 1 表示该元素满足您要查找的条件,而 0 表示该条件不存在不满意。如果我们显示 200 <= a,这就是我们得到的:

>> 200 <= a

ans =

     0
     0
     1
     0
     0

这意味着只有第三个元素满足您的条件。如果我们使用此逻辑向量并索引到 a,我们将 return 仅满足 a 中满足条件的那些元素。因此,我们会得到:

vals = 

433