web-dev-qa-db-ja.com

Matlabの可変範囲[x、y]での正規化

与えられた範囲の与えられた整数の配列を正規化する基本的なmatlabプログラムを作りたいです。

  • 入力は配列[a1、a2、a3、a4、a5、a6、a7 ...]、および範囲[x、y]です。
  • 出力は正規化された配列です。

しかし、どこでも、[0,1]または[-1,1]の範囲の正規化が見られます。可変範囲の正規化が見つかりません。 MATLABコードまたは可変範囲の式を書いていただければ幸いです。

アイデアをありがとう。

18
fiasco

[x, y]に正規化する場合、最初に[0, 1]に正規化します:

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

次に[x,y]にスケーリングします:

 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;
52
Max

MATLABには、正規化のための特別な機能があります。これらには、入力値の正規化に使用される人工ニューラルネットワークツールボックスが含まれます。

mapminmax

mapminmaxは、各行の最小値と最大値を[YMIN、YMAX]に正規化することにより行列を処理します。

mapstd

mapstdは、各行の平均と標準偏差をymeanとystdに変換することにより行列を処理します。

詳細

0
PyMatFlow

R2017b以降、MATLABには rescale という名前のこの関数があり、これはまさにこれを行います。
i.e。 arrayを間隔[x, y]に再スケーリングする場合:

normalized_array = rescale(array, x, y);

xyが指定されていない場合、arrayは間隔[0,1]に正規化されます。

0
Sardar Usama