2013-02-08 25 views
6

私はMatlab 2012aを使用しています。配列のn個の最小値を見つける

私はk個のセル(たとえば1000個)の配列を持っています。この配列の5つの最低値を見つける必要があり、XとYの値の平均値を計算する必要があります。

誰でも知っていますか?あなたは配列XとYを持っている、とあなたは5つの、最も低いY値を見つけたいと仮定すると、

+1

はそれを行うためのアルゴリズムについてのご質問はありますか?どのようなプログラミング言語を使用していますか? – Alex

+0

私は編集しました。私はMatlab 2012aを使用しています – Vissenbot

+0

あなたのデータの構造は何ですか?あなたは "配列"と "細胞"と "X"と "Y"と言います。私はあなたが配列XとYを持っていると仮定して答えを作成しましたが、あなたの質問を再読します。私は実際にあなたが何を持っているのかわかりません。 – Floris

答えて

13

[m mi] = sort(Y); 
lowest5index = mi(1:5); 
lowest5Y = Y(lowest5index); 
lowest5X = X(lowest5index); 

meanYlowest5 = mean(lowest5Y); 
meanXlowest5 = mean(lowest5X); 

説明:二つの出力パラメータを持つ

sortコマンドは、ソートされた配列(中の両方を返しますm)と、元の配列のインデックス(mi)を使用します。最初の5つのインデックスmi(1:5)は5つの最低値に対応します。 XとYの両方についてこれらの値のmeanを取ることは、私たちが望むことをするでしょう。私があなたの問題の声明を理解できなかった場合は、あなたの質問を明確にしてください。

+0

ああ、私にそれを打つ^^ – Groot

+0

ええ、申し訳ありません、私は十分にはっきりしていませんでした。 私はYの5つの最低値を見つけて、これらの5つの点のXとYの平均をとる必要があります。 あなたのテクニックはかなり面白かったです!私は便利な場合は、そのトリックを念頭に置くよ! – Vissenbot

+0

私のテクニックは、あなたが求めていることを正確に行います...私はそれをさらに明確にするためにコードを編集しました。それでも機能しない場合は、データ構造をより明確に説明する必要があります。 – Floris

1

配列のsortを最低値から最高値にして5つの最初の値を選択する方法はどうですか?それらは配列の5分の値になります。その後、これらの5つの値の平均を実行します。

これはメモリを効率的に使用する方法ではないかもしれませんが、1000個の値を入力するとジョブが完了します。

希望すると助かります!

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 
関連する問題