快一点。我需要在数组中找到匹配的特定值并检索匹配值的位置/顺序。
根据马特的回答编辑,但仍然无效:
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就是我想要的。
答案 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