2016-06-28 12 views
-1

私は1から11までの10の乱数のベクトルを持っています(ベクトル1:11の中央値は6です)。異なる中央値を持つ円の空間にベクトルを変換する

min = 1; 
max = 11; 
nVector = 10; 
VectorRand = randi([min max],1,nVector); 

Iが異なる中央値、11の値の円形アレイにVectorRandの値を変換したいと思います。例えば、2メディアン:VectorRand = [1 3 8 4 6 8 5 2 6 8 10] 結果の場合に

-5(8) -4(9) -3(10) -2(11) -1(1) 0(2) +1(3) +2(4) +3(5) +4(6) +5(7) 
Result: 8 9 10 11 1 - 2 - 3 4 5 6 7 

:-1 -5 2~4 -5 3 0 4 -5 - 中央値(この場合は2)はゼロになり、他の値は全て中央値からの距離に関して変換される(例えば、8 = -5,9 = -4 10 = -3など)。

+1

'VectorRand'のメジアンはどのようにして得られますか?環状アレイとは何ですか?あなたはどちらの距離を使っていますか? '8 - > - 5 - > 9 - > - 4 ...' – BillBokeey

答えて

0

記述が混乱しているが、ここで何をしたいのように私の推測だ:中央値が0になるように

>> % Set parameters 
>> minVal = 1; 
>> maxVal = 11; 
>> newMedian = 2; 
>> % Determine mapping 
>> currMedian = median(minVal:maxVal); 
>> map = circshift((minVal:maxVal) - currMedian, [0 newMedian - currMedian]); 

これは、値の範囲をシフトしている(これは最終的にあなたのターゲットからの距離を与えます中央値)を計算し、それを回転させて、ターゲット中央値が値の順序の中央値になるようにします。今度はマップを作成して、この新しいサーキュラントリングにベクトルをマップすることができます:

>> VectorRand = [1 3 8 4 6 8 5 2 6 8 10]; 
>> Result = map(VectorRand) 
Result = 
    -1  1 -5  2  4 -5  3  0  4 -5 -3 
+0

あなたのスクリプトには "newMedian"とは何ですか?私はあなたの結果を複製できません – MManassi

+0

申し訳ありませんが、私はこのスクリプトを "newMiddleValue"としてスクリプトに書いていました(ここでは奇妙な用語の中央値を使用しています)。私は答えを編集したので、今はうまくいくはずです。 – CKT

+0

いいえ結果はまだ異なります。 – MManassi

関連する問題