【发布时间】:2013-03-07 15:34:26
【问题描述】:
在给定的数组中,我需要找到数组中最小值的索引,但前提是它是负数。
例如:[1, 2, 3, 4] 将不返回任何索引
而[1, 4, -7, -2] 将返回3
我在想find() 命令一定很简单,但我不知道如何在这种特定情况下使用它。
【问题讨论】:
-
我在尝试您的问题时自己发现了它。 :D
在给定的数组中,我需要找到数组中最小值的索引,但前提是它是负数。
例如:[1, 2, 3, 4] 将不返回任何索引
而[1, 4, -7, -2] 将返回3
我在想find() 命令一定很简单,但我不知道如何在这种特定情况下使用它。
【问题讨论】:
有时,将所有内容都放在一个复杂的向量表达式中并不是最优的。
在这种情况下,我希望避免调用 find 会更快。
function [i] = most_negative_index(x)
[mn, i] = min(x);
if mn >= 0
i = [];
end
end
【讨论】:
假设输入矩阵是A,这应该可以解决问题:
find(A==min(A) & A<0)
例如:
>> A = [1, 2, 3, 4];
>> B = [1, 4, -7, -2];
>> find(A==min(A) & A<0)
ans =
Empty matrix: 1-by-0
>> find(B==min(B) & B<0)
ans =
3
【讨论】:
find(cell2mat(arrayfun(@(x)eq(x,min(A(sign(A) == -1))),A,'UniformOutput',false)))。大声笑,有时你需要退后一步,在开始编码之前考虑一些事情......