3

正規化されたベクトル(つまり、その要素の合計は1)があり、それらは降順(つまり[0.5 0.4 0.09 0.01])です。

合計が特定のしきい値をわずかに下回っている最初の要素のインデックスを取得する方法はありますか?

たとえば、私の場合、 のしきい値の場合、のインデックス (ベクトル要素にインデックスを付ける Matlab の方法) を0.6取得します。Iのしきい値の場合、 、 のインデックスなどを取得します。10.50.91[1 2][0.5 0.4]

ベクトルのループでこれを実行できることはわかっていますが、Matlab を使用しているという事実を考慮して、これを 1 つのコマンド ラインまたは最大 2 で実行できるかどうかを尋ねて、コードの計算速度を向上させようと考えました。

4

1 に答える 1

4

このcumsum関数は、ベクトルの要素の累積和を計算します。これを行い、しきい値が累積合計よりも小さくなるインデックスを見つけると、答えが得られます。

V = [0.5 0.4 0.09 0.01]

t = 0.6;

index = find(t < cumsum(V), 1)-1

index = 0ifの場合、最初の要素でも条件が成り立たないことに注意してください。

資格のある要素のベクトルを取得することを主張する場合は、次のように単純に範囲を定義できます。

indices = 1 : (find(t<cumsum(V),1)-1)

この場合indices、最初の要素が適合しない場合、ベクトルは空になります。

于 2012-10-02T15:16:37.147 に答える