2009-04-15 13 views
0

Wenn ich eine Reihe von Buchstaben abcd gegeben habe und ich dies in einen Vektor V = [ 1,2,3,4] konvertieren möchte, wie kann ich das tun?Matlab swapping

Antwort

0

Verwenden Sie uint8, dann subtrahieren Sie den char-Wert von 'a', dann drücken Sie das auf einen Vektor. link

0

Zur Karte 'a' 1 ist, 'b' 2 ist, usw., verwenden, um die Funktion DOUBLE das Zeichen zurück in seine ASCII-Codenummer neu zu fassen, verschiebt dann den Wert:

V = double(charString)-96; 

EDIT: Eigentlich brauchen Sie nicht einmal den Anruf zu DOUBLE. Zeichen werden automatisch in Zahlen mit doppelter Genauigkeit konvertiert, wenn Sie eine Arithmetik mit einer anderen Zahl mit doppelter Genauigkeit ausführen (der Standardtyp für MATLAB-Variablen). Also, das Folgende ist eine noch einfachere Antwort:

V = charString-96; 
4

Einfach 'a' subtrahieren. Fügen Sie eins hinzu, um "a" auf 1 zu mappen. Die Subtraktion sendet die Ergebnisse in ein Doppel.

V = C - 'a' + 1; 

Zum Beispiel

C = 'helloworld'; 
C - 'a' + 1 
ans = 
    8  5 12 12 15 23 15 18 12  4 
+0

Dank Holzhackschnitzel gefunden, dass ein interessanter ‚Trick‘ :) – ccook

+0

+1 dachte ich, das könnte funktionieren, aber ich war auf einer Maschine mit MATLAB nicht, es zu testen . – gnovice