48 votos

escalar un número entre un rango

He estado intentando conseguir un sistema que pueda escalar un número hacia abajo y entre dos rangos. Me he atascado con la parte matemática.

Lo que estoy pensando es que el número 200 sea normalizado para que caiga entre un rango digamos de 0 a 0,66 o de 0,66 a 1 o de 1 a 1,66. El rango es variable también.

Se agradecería cualquier ayuda.

Gracias

104voto

icelava Puntos 548

El escalado deberá tener en cuenta el posible rango del número original. Hay una diferencia si su 200 podría haber estado en el rango [200,201] o en [0,200] o en [0,10000].

Así que dejemos

  • $r_{\text{min}}$ denota el mínimo del rango de su medición
  • $r_{\text{max}}$ denota el máximo del rango de su medición
  • $t_{\text{min}}$ denotan el mínimo del rango de su escala deseada
  • $t_{\text{max}}$ denotan el máximo del rango de su escala deseada
  • $m\in[r_{\text{min}},r_{\text{max}}]$ denote su medida para ser escalada

Entonces

$$ m\mapsto \frac{m-r_{\text{min}}}{r_{\text{max}}-r_{\text{min}}}\times (t_{\text{max}}-t_{\text{min}}) + t_{\text{min}}$$

escalará $m$ linealmente en $[t_{\text{min}},t_{\text{max}}]$ como se desee.

Ir paso a paso,

  1. $ m\mapsto m-r_{\text{min}}$ mapas $m$ a $[0,r_{\text{max}}-r_{\text{min}}]$ .

  2. Siguiente, $$ m\mapsto \frac{m-r_{\text{min}}}{r_{\text{max}}-r_{\text{min}}} $$

    mapas $m$ al intervalo $[0,1]$ con $m=r_{\text{min}}$ asignada a $0$ et $m=r_{\text{max}}$ asignada a $1$ .

  3. Multiplicando esto por $(t_{\text{max}}-t_{\text{min}})$ mapas $m$ a $[0,t_{\text{max}}-t_{\text{min}}]$ .

  4. Por último, añadir $t_{\text{min}}$ cambia todo y los mapas $m$ a $[t_{\text{min}},t_{\text{max}}]$ como se desee.

43voto

Jim Ferrans Puntos 13673

En general, para escalar su variable $x$ en un rango $[a,b]$ puedes usar: $$ x_{normalized} = (b-a)\frac{x - min(x)}{max(x) - min(x)} + a $$

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X