与えられた範囲の与えられた整数の配列を正規化する基本的なmatlabプログラムを作りたいです。
しかし、どこでも、[0,1]または[-1,1]の範囲の正規化が見られます。可変範囲の正規化が見つかりません。 MATLABコードまたは可変範囲の式を書いていただければ幸いです。
アイデアをありがとう。
[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;
MATLABには、正規化のための特別な機能があります。これらには、入力値の正規化に使用される人工ニューラルネットワークツールボックスが含まれます。
mapminmax
mapminmaxは、各行の最小値と最大値を[YMIN、YMAX]に正規化することにより行列を処理します。
mapstd
mapstdは、各行の平均と標準偏差をymeanとystdに変換することにより行列を処理します。
R2017b以降、MATLABには rescale
という名前のこの関数があり、これはまさにこれを行います。
i.e。 array
を間隔[x, y]
に再スケーリングする場合:
normalized_array = rescale(array, x, y);
x
とy
が指定されていない場合、array
は間隔[0,1]
に正規化されます。