Je veux créer un programme matlab de base qui normalise un tableau donné de nombres entiers dans la plage donnée.
Mais partout, je vois la normalisation dans la plage de [0,1] ou de [-1,1]. Impossible de trouver une normalisation de plage variable. Je vous serais reconnaissant d’écrire le code matlab ou la formule pour la plage de variables.
Merci pour les idées.
Si vous voulez normaliser à [x, y]
, commencez par normaliser à [0, 1]
via:
range = max(a) - min(a);
a = (a - min(a)) / range;
Puis passez à [x,y]
via:
range2 = y - x;
a = (a * range2) + x;
Mettre tous ensemble:
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 a une fonction spéciale pour la normalisation. Celles-ci sont incluses dans la boîte à outils Artificial Neural Network, utilisée pour les valeurs d’entrée de normalisation.
mapminmax
mapminmax traite les matrices en normalisant les valeurs minimale et maximale de chaque ligne à [YMIN, YMAX].
mapstd
mapstd traite les matrices en transformant la moyenne et l'écart type de chaque ligne en ymean et ystd.
À partir de R2017b, MATLAB a cette fonction appelée rescale
qui fait exactement cela.
c'est à dire. si vous voulez redimensionner array
à l'intervalle [x, y]
, alors:
normalized_array = rescale(array, x, y);
Si x
et y
ne sont pas spécifiés, array
est normalisé à l'intervalle [0,1]
.