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

すべてを 1 つの複雑なベクトル式に入れるのが最適でない場合があります。

この場合、 への呼び出しを避ける方がはるかに高速になると思いますfind

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