将值与值向量进行比较,并 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
的值将是 0
或 1
。但是如果我想知道 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
任何人都可以告诉我如何 return 匹配值与 MATLAB 中的值和列向量之间的比较。所以假设要比较的值是 200,我得到一个列向量:
a = [21; 32; 433; 54; 42;]
我想找到向量 a
return 中的哪个元素与比较匹配 200 <= a
如果我这样做:x = any(200 <= a)
根据条件是否满足,x
的值将是 0
或 1
。但是如果我想知道 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