2009-04-14 9 views

Antwort

1

So etwas wie

C = char(V+ones(size(V)).*(97-1)) 

funktionieren sollte (97 ist der ASCII-Code für 'a', und Sie möchten 1 zur Karte zu 'a' es sieht so aus).

+0

In all diesen Kommentaren und Lösungen (nicht nur auf Ihrem, Matt), würde ich wahrscheinlich den Code schreiben, so dass 'a' im Code erschien; Zum Beispiel würde ich Ihre schreiben als ... C = char (V + Einsen (Größe (V)). * (double ('a') - 1)); Ich denke, dass das den ZWECK des Codes für den "Gelegenheits" -Leser etwas offensichtlicher macht, auch wenn er das ASCII a == 97 weiß. –

1

Verwenden der CHAR-Funktion, die eine Anzahl Umdrehungen (dh ASCII-Code) in ein Zeichen:

charString = char(V+96); 

EDIT: rückwärts zu gehen (Mapping 'a' 1 ist, 'b' 2 ist, etc.), verwenden Sie die DOUBLE Funktion den Charakter zurück zu seiner ASCII-Codenummer neu zu fassen:

V = double(charString)-96; 
+0

danke das hat perfekt funktioniert –

+0

Könnten Sie mir sagen, wie ich das Gegenteil machen soll? –

4

Es gibt zwei einfache Möglichkeiten, dies zu tun. Ein Weg ist ein einfacher Index.

C = 'abcdefghijklmnopqrstuvwxyz'; 
V = [8 5 12 12 15 23 15 18 12 4]; 

C(V) 
ans = 
helloworld 

Natürlich wird char auch das tun. Die char-Antwort ist besser, weil Sie nicht eine Liste von Buchstaben speichern müssen, in die indexiert werden soll.

char('a' + V - 1) 
ans = 
helloworld 

Dies ist am besten da, wenn Sie hinzufügen, ‚a‘ zu etwas, wandelt es ‚a‘ in seiner ascii Darstellung im Fluge. + 'a' ergibt 97, die ascii-Form von 'a'.

Eine nette Sache ist es funktioniert auch für 'A', also, wenn Sie Kappen wollten, fügen Sie einfach 'A' stattdessen hinzu.

char('A' + V - 1) 
ans = 
HELLOWORLD 

Sie weitere Informationen über die Arbeit mit Strings in MATLAB von diesen Befehlen finden:

help strings 
doc strings 
+0

char() ist auch in dem Fall vorzuziehen, dass sich die Reihenfolge der Buchstaben irgendwann in der Zukunft ändert ... –

11

Mit 'a' direkt anstelle von ASCII-Codes sein könnte etwas besser lesbar

charString = char(V-1+'a'); 

Das Großbuchstabe wird dann mit

charString = char(V-1+'A'); 
erhalten
+0

blast! Ich dachte, das würde funktionieren, aber ich hatte keine Kopie von Matlab zur Hand, um sicherzugehen. gute Show :) –

+0

Wow, ich habe so etwas für immer gesucht. Jetzt, da ich es sehe, fühle ich mich dumm, weil ich es nicht früher herausgefunden habe. Danke und gut gemacht. Nun, wenn nur Excel nicht terribad wäre, würde ich diesen hässlichen (aber brillanten) Hack nicht brauchen! –

Verwandte Themen