3

在给定的数组中,我需要找到数组中最小值的索引,但前提是它是负数。

例如:[1, 2, 3, 4]将不返回任何索引

并且[1, 4, -7, -2]会回来3

我在想命令一定很简单find(),但我不知道如何在这种特定情况下使用它。

4

2 回答 2

5

假设输入矩阵是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
于 2013-03-19T04:40:59.467 回答
4

有时,将所有内容都放入一个复杂的向量表达式中并不是最优的。

在这种情况下,我希望避免调用find.

function [i] = most_negative_index(x)
   [mn, i] = min(x);
   if mn >= 0
       i = [];
   end
end
于 2013-03-19T05:45:31.470 回答