任何人都可以告诉我如何在MATLAB中将匹配值返回到值和列向量之间的比较。所以假设要比较的值是200,我得到了一个列向量:
a = [21; 32; 433; 54; 42;]
我想找到向量a
中的哪个元素返回比较匹配200 <= a
如果我这样做:x = any(200 <= a)
x
的值将是0
或1
,具体取决于条件是否满足。但是,如果我想知道向量'a'
中的哪个值满足条件,我该如何找到它?在这种情况下,元素3和值是433
答案 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