Frage:
Skalieren Sie eine Zahl zwischen einem Bereich
Saneesh B
2017-05-23 13:59:26 UTC
view on stackexchange narkive permalink

Ich habe versucht, ein System zu erreichen, das eine Zahl verkleinern und zwischen zwei Bereichen liegen kann.Ich bin mit dem mathematischen Teil davon festgefahren.

Was ich denke, ist die zu normalisierende Zahl 200, so dass sie zwischen einem Bereich liegt, sagen wir 0 bis 0,66 oder 0,66 bis 1 oder 1 bis 1,66.Der Bereich ist ebenfalls variabel.

Jede Hilfe wäre willkommen.

Danke

Kennen Sie das (theoretische) Minimum und Maximum der ursprünglichen Werte?Oder können wir den gesamten Bereich der verfügbaren Werte verwenden, um diese Werte zu erhalten (z. B. würden Sie in 'the math' ein Maximum (x) und ein Min (x) akzeptieren)?
Ja, das würde ein paar zusätzliche Schleifen beinhalten, kann aber gefunden werden.
Es gibt viel mehr Duplikate.Hier ist eine Suche: https://stats.stackexchange.com/search?q=normalize+range+is%3Aanswer+score%3A1.
Zwei antworten:
Stephan Kolassa
2017-05-23 14:09:00 UTC
view on stackexchange narkive permalink

Ihre Skalierung muss den möglichen Bereich der ursprünglichen Nummer berücksichtigen. Es gibt einen Unterschied, ob Ihre 200 im Bereich [200,201] oder in [0,200] oder in [0,10000] gelegen haben könnte.

Also lass

  • $ r _ {\ text {min}} $ bezeichnet das Minimum des Messbereichs
  • $ r _ {\ text {max}} $ bezeichnet das Maximum des Messbereichs
  • $ t _ {\ text {min}} $ bezeichnet das Minimum des Bereichs Ihrer gewünschten Zielskalierung
  • $ t _ {\ text {max}} $ bezeichnet das Maximum des Bereichs Ihrer gewünschten Zielskalierung
  • $ m \ in [r _ {\ text {min}}, r _ {\ text {max}}] $ bezeichnet Ihre zu skalierende Messung

Dann

$$ m \ mapsto \ frac {m-r _ {\ text {min}}} {r _ {\ text {max}} - r _ {\ text {min}}} \ times (t _ {\ text {max }} - t _ {\ text {min}}) + t _ {\ text {min}} $$

skaliert $ m $ linear in $ [t _ {\ text {min}}, t _ {\ text {max}}] $ wie gewünscht.

Um Schritt für Schritt vorzugehen,

  1. $ m \ mapsto m-r _ {\ text {min}} $ ordnet $ m $ $ [0, r _ {\ text {max}} - r _ {\ text {min}}] $ zu.
  2. Weiter, $$ m \ mapsto \ frac {m-r _ {\ text {min}}} {r _ {\ text {max}} - r _ {\ text {min}}} $$

    ordnet $ m $ dem Intervall $ [0,1] $ zu, wobei $ m = r _ {\ text {min}} $ $ 0 $ und $ m = r _ {\ text {max}} $ zugeordnet ist $ 1 $.

  3. Multiplizieren Sie dies mit $ (t _ {\ text {max}} - t _ {\ text {min}}) $ ordnet $ m $ $ [0, t _ {\ text {max}} - t_ {zu \ text {min}}] $.

  4. Schließlich verschiebt das Hinzufügen von $ t _ {\ text {min}} $ alles und ordnet $ m $ $ [t _ {\ text {min}}, t _ {\ text {max}}] $ wie gewünscht zu .

  5. ol>
Tolle Erklärung!Ich bin in einem Szenario, in dem ich $ m $ minimieren möchte und möchte, dass $ m $ den Wert von $ t_ \ text {min} $ annimmt, wenn $ m = r_ \ text {max} $, und den Wert von$ t_ \ text {max} $ wenn $ m = r_ \ text {min} $. Dank Ihrer Erklärung war dies leicht zu erreichen: Tauschen Sie einfach den Zähler auf $ r_ \ text {min} - m $ und fügen Sie am Ende $ t_ \ text {max} $ anstelle von $ t_ \ text {min} $ hinzu: $$ m \ mapsto \ frac {r _ {\ text {min}} - m} {r _ {\ text {max}} - r _ {\ text {min}}} \ times (t _ {\ text {max}} -t _ {\ text {min}}) + t _ {\ text {max}} $$
drgxfs
2017-05-23 14:11:24 UTC
view on stackexchange narkive permalink

Um Ihre Variable $ x $ in einen Bereich $ [a, b] $ zu skalieren, können Sie im Allgemeinen Folgendes verwenden: $$ x_ {normalisiert} = (b-a) \ frac {x - min (x)} {max (x) - min (x)} + a $$



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...