在数组中查找匹配值并计算它

时间:2015-06-26 16:30:07

标签: arrays matlab

快一点。我需要在数组中找到匹配的特定值并检索匹配值的位置/顺序。

根据马特的回答编辑,但仍然无效:

 l = min (points(2:2:end));
 Y = find((points(2:2:end))==l);
 count=numel(Y);

结果:

  count = 1
  l = 205

以下示例给出的正确结果应为:

 result = 4

澄清的例子:

我的阵列是[114 205 137 205 144 204]。假设匹配值为205;在这种情况下,位置或顺序应该是4.那就是它,4就是我想要的。

2 个答案:

答案 0 :(得分:1)

只需使用find获取索引/位置,然后使用numel来获取计数。由于您正在跳过元素,因此您需要将find的结果乘以2。

points = [114 205 137 205 144 204 222 204];

l     = min(points(2:2:end))
Y     = 2 * find(points(2:2:end)==l) % Y is the position in the original array
count = numel(Y)

输出:

l =
   204
Y =
     6     8
count =
     2

答案 1 :(得分:0)

简单。我假设点是行向量,但这种方法可以很容易地扩展到任何形状的数组

>> points = [1, 2, 3, 4, 2, 1, 4, 5, 3, 2, 1];
>> y = find(points == 1)

y = 

     1     6     11

>> length(y)

ans =

     3

>>

y包含满足条件的点的索引。请参阅find此处的文档:http://www.mathworks.com/help/matlab/ref/find.html