2017-03-25 2 views
1

Ich versuche, einen Bereich von Werten zu Variablen wie unten abgebildet. Die Funktion containers.Map scheint nicht zu helfen. Ich würde gerne wissen, ob es eine eingebaute Funktion gibt.Gibt es eine Möglichkeit, numerische Werte in MATLAB einer Reihe von Zahlen zuzuordnen?

Zum Beispiel: Bereich zwischen 5,27 bis 5,32 und es gibt viele Unter

R1 = 5.27 to 5.279, 
R2 = 5.28 to 5.289, 
R3 = 5.29 to 5.299, 
R4 = 5.30 to 5.309, 
R5 = 5.31 to 5.319 & 
R6 = 5.32 to 5.329. 

Bereiche I Werte möchte für jeden dieser Bereiche wie

zuweisen
R1 = 150    R2 = 160   R3 = 170 
R4 = 180    R5 = 190   R6 = 200. 

Bitte um Hilfe! Vielen Dank.

Antwort

2

Unter der Annahme, dass Ihre Bereiche einheitlich sind, können Sie einfach eine lineare Transformation anwenden, die Ihnen hilft, zu Ihrem gewünschten Bereich zu gelangen.

Beachten Sie, dass das Minimum Ihrer Werte 5,27 ist, das Maximum 5,33 und der Bereich jedes Fachs 0,01 ist. Nehmen Sie daher einen Kandidatenwert um 5,27 subtrahieren, dividieren Sie durch 0,01, so dass Sie bestimmen können, auf welchen Fach es abbildet (d. H. Von 0 bis 5 geht), indem Sie floor nehmen.

Sie wissen auch, dass Ihr Mindestwert im neuen Bereich 150 in Schritten von 10 ist, um zum nächsten Fach zu gelangen. Daher einfach Ihre neue Schrittgröße nehmen, multiplizieren Sie mit diesem Fach Wert und fügen Sie mit 150. Ihre alten Werte Gesetzt in query gespeichert sind, würden Sie also tun:

norm_val = floor((query - 5.27)/0.01); 
new_val = 150 + 10 * norm_val; 

Ein Beispiel dieses Arbeits zeigt. Angenommen, wir die folgende Abfrage haben:

>> query = [5.285 5.298 5.312] 

query = 

    5.2850 5.2980 5.3120 

Laufen durch den Code erhalten wir:

>> new_val 

new_val = 

    160 170 190 

Wir können sehen, dass der Wert 5.285 Karten an den zweiten Behälter, der 160. Der Wert von 5.298 Karten ist zum dritten Behälter, der 170 ist. Schließlich bildet der Wert von 5.312 auf den fünften Behälter ab, der 190 ist.

1

Verwenden Sie discretize, um die Daten zu sortieren.

Angenommen, x enthält die Daten, legen Sie die Kanten der Fächer und die Werte fest, die zugewiesen werden sollen. Die Funktion discretize weist jedem Wert eine Speicherplatznummer zu. Verwenden Sie die Bin-Nummern als Indizes im R-Werte-Vektor.

Rvals = [150:10:200]; 
edges = [5.27:.01:5.33]; 
bins = discretize(x, edges); 
binnedData = Rvals(bins); 
Verwandte Themen