Matlab 2012a を使用しています。
k 個のセル (1000 など) の配列があります。この配列の 5 つの最低値を見つけて、X と Y でそれらの値の平均を計算する必要があります。
誰でもそれを行う方法を知っていますか?
配列 X と Y があり、最も低い 5 つの Y 値を見つけたいとします。
[m mi] = sort(Y);
lowest5index = mi(1:5);
lowest5Y = Y(lowest5index);
lowest5X = X(lowest5index);
meanYlowest5 = mean(lowest5Y);
meanXlowest5 = mean(lowest5X);
説明:
2 つの出力パラメーターを指定したsort
コマンドは、並べ替えられた配列 ( m
) と元の配列のインデックス( ) の両方を返しますmi
。最初の 5 つのインデックスmi(1:5)
は、5 つの最低値に対応します。mean
X と Y の両方に対してこれらの値を取得すると、必要なことが行われます。問題の説明が理解できなかった場合は、質問を明確にしてください。もう一度質問します。
sort
最小値から最大値まで配列を調べてから、最初の 5 つの値を選択するのはどうですか。これらは、配列の 5 分の値になります。次に、これら 5 つの値の平均を実行します。
これは最もメモリ効率の良い方法ではないかもしれませんが、値が 1000 個しかない場合は作業を完了できます!
それが役に立てば幸い!
minmaxselection
この問題のために特別に最適化された MATLAB MEX パッケージを使用します。
a = [2,3,4,7,56,4,21, 64, -2];
mink(a, 2)
<< ans =
<< -2 2
mink(a,4)
<< ans =
<< -2 2 3 4