将值与值向量进行比较,并在Matlab中返回匹配项

时间:2015-01-15 23:41:15

标签: matlab

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

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

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

如果我这样做:x = any(200 <= a) x的值将是01,具体取决于条件是否满足。但是,如果我想知道向量'a'中的哪个值满足条件,我该如何找到它?在这种情况下,元素3和值是433

3 个答案:

答案 0 :(得分:3)

其他答案都很好,但find是不必要的。尽可能使用逻辑索引。看到200 <= a对我来说有点奇怪。我喜欢在左侧看到变量,所以这与说a >= 200相同。无论如何,你可以这样做:

vals = a(200 <= a);

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

>> 200 <= a

ans =

     0
     0
     1
     0
     0

这意味着只有第三个元素符合您的标准。如果我们使用此逻辑向量并将其编入索引a,我们只会从a返回满足条件的元素。因此,我们会得到:

vals = 

433

答案 1 :(得分:2)

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

以下命令返回符合条件的索引处的值。

a(find(a >= 200))

ans =

     433

同样,&lt; = 200:

a(find(a <= 200))

ans =

    21
    32
    54
    42

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

答案 2 :(得分:2)

使用find,如下所示:

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