3

Matlab に次のようなベクトルがあります。

1列目から4列目

   0.160000000000000 0.208000000000000 0.244000000000000 0.268000000000000

  列 5

   0.280000000000000

そして、次の値の上限インデックスを見つけたい:

0.16230400000000

この値が 1° と 2° のインデックスの間にあることはわかっていますが、最も近い値がインデックス 1 であっても、この場合はインデックス 2 である上限を見つけたいと考えています。ループなしで Matlab でそれを取得するにはどうすればよいですか? ?

最も近い値を見つけるために次の方法を見つけましたが、常に上限が必要です。

[c ind] = min(abs(probCum-codComp));
4

4 に答える 4

5

対象の値を 1 増やした値よりも小さいエントリの数を数えることで、上限のインデックスを取得できます。

id = sum(value < data)+1; 

すべての要素が対象の値より小さい場合、は のサイズより大きいdata(id)ため、 はエラーを返すことに注意してください。iddata

于 2012-10-02T15:03:51.117 に答える
4

配列が昇順でソートされている場合、find コマンドは特に強力です。

find (a>0.162,1)
于 2012-10-02T16:09:06.530 に答える
2

からの 2 番目の出力を使用してmin、インデックスを「適切な」インデックスに取得できます。

[~,index] = min(abs(data-value));

次に、下限または上限が取得されたかどうかを確認し、それindexに応じて調整します。

if value > data(index)  
    index = min(length(data), index+1); end
于 2012-10-02T14:50:24.930 に答える
2

検索した値をベクトルから差し引いて、符号を観察することができます

V =  [0.1600    0.2080    0.2440    0.2680    0.2800];
v =  0.162304;
V-v
ans =

-0.0023    0.0457    0.0817    0.1057    0.1177

findこれで、このベクトルの最初の非負のエントリを取得できます- これが上限です

find(V-v>=0, 1, 'first')
ans =

 2

上記の式の不等式をニーズに合わせて変更することもできます。

于 2012-10-02T15:01:45.627 に答える