6

Matlab 2012a を使用しています。

k 個のセル (1000 など) の配列があります。この配列の 5 つの最低値を見つけて、X と Y でそれらの値の平均を計算する必要があります。

誰でもそれを行う方法を知っていますか?

4

3 に答える 3

14

配列 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 つの最低値に対応します。meanX と Y の両方に対してこれらの値を取得すると、必要なことが行われます。問題の説明が理解できなかった場合は、質問を明確にしてください。もう一度質問します。

于 2013-02-08T15:03:40.373 に答える
1

sort最小値から最大値まで配列を調べてから、最初の 5 つの値を選択するのはどうですか。これらは、配列の 5 分の値になります。次に、これら 5 つの値の平均を実行します。

これは最もメモリ効率の良い方法ではないかもしれませんが、値が 1000 個しかない場合は作業を完了できます!

それが役に立てば幸い!

于 2013-02-08T15:03:54.540 に答える
1

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
于 2014-11-11T10:54:08.077 に答える