Normalización en rango variable[x, y] en Matlab
normalization (3)
Quiero crear un programa matlab básico que normalice una matriz determinada de enteros en el rango dado.
- Las entradas son una matriz [a1, a2, a3, a4, a5, a6, a7 ...], y el rango [x, y]
- La salida es una matriz normalizada.
Pero en todas partes, veo la normalización en el rango de [0,1] o [-1,1]. No se puede encontrar la normalización de rango variable. Le agradeceré que escriba el código matlab o la fórmula para rango variable.
Gracias por las ideas.
A partir de R2017b, MATLAB tiene esta función llamada rescale
que hace exactamente esto.
es decir, si desea volver a escalar la array
en el intervalo [x, y]
entonces:
normalized_array = rescale(array, x, y);
Si no se especifican x
e y
, la array
se normaliza al intervalo [0,1]
.
MATLAB tiene una función especial para la normalización, que se incluye en la caja de herramientas de la red neuronal artificial, que se utiliza para los valores de entrada de normalización.
mapminmax
mapminmax procesa matrices normalizando los valores mínimo y máximo de cada fila a [YMIN, YMAX].
mapstd
mapstd procesa matrices transformando la media y la desviación estándar de cada fila en ymean y ystd.
Si desea normalizar a [x, y]
, primero normalice a [0, 1]
través de:
range = max(a) - min(a);
a = (a - min(a)) / range;
Luego escala a [x,y]
través de:
range2 = y - x;
a = (a * range2) + x;
Poniendolo todo junto:
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;