2012-04-28 62 views
15

与えられた範囲の整数の配列を正規化する基本的なmatlabプログラムを作成したいと思います。Matlabの可変範囲[x、y]の正規化

  • 入力は配列[A1、A2、A3、A4、A5、A6、A7 ...]と範囲[X、Y]
  • 出力が正規化配列です。

しかしどこでも、私は[0,1]または[-1,1]の範囲の正規化を参照してください。可変範囲正規化を見つけることができません。 matlabコードや変数範囲の式を書いていただければ幸いです。

ありがとうございました。

答えて

41

あなたは、[x, y]に正規化する最初の経由[0, 1]に正常化したい場合:すべて一緒にそれを置く

range2 = y - x; 
a = (a * range2) + x; 

function normalized = normalize_var(array, x, y) 

    % Normalize to [0, 1]: 
    m = min(array); 
    range = max(array) - m; 
    array = (array - m)/range; 

    % Then scale to [x,y]: 
    range2 = y - x; 
    normalized = (array*range2) + x; 
+1

グレートに

range = max(a) - min(a); a = (a - min(a))/range; 

はその後経由[x,y]に拡大解決策ですが、瞬間にはPythonのように見えて、私はlooなしでコピーしました王:P(と私はupvotedとコメントした後、私はタイトルを見て、それがmatlabのためだった見た!申し訳ありませんが、非常に役に立ちました!) –

+0

入力範囲がない場合はどうすればいいですか?たとえば、345のような数値を[-1,1]の範囲に入れたいとします。 – superpuccio

+0

@superpuccio:?あなたはあなたが求めているものを明確にすることができますか? – Max

関連する問題