2012-08-28 17 views

Antwort

26

Ein Array von Strings muss ein Zellen-Array sein. Das heißt:

s = [12 25 34 466 55] 
strtrim(cellstr(num2str(s'))') 
+0

Eine bessere Möglichkeit, als verwenden, was ich oben geschrieben habe. – Vish

+0

Das ist doppelt so schnell wie Arrayfun und Cellfun. +1 – Doresoom

0

In MATLAB, [ '12' '25' '34' '466' '55'] ist die gleiche wie eine einzelne Zeichenfolge jene Zahlen enthält. Das heißt:

['12' '25' '34' '466' '55'] 

ans = 

12253446655 

ich mehr Kontext hier muß für das, was Sie versuchen zu erreichen, aber vorausgesetzt, Sie wollen noch in der Lage sein, jede einzelne Zahl als String zuzugreifen, ein Zellenfeld ist wahrscheinlich der beste Ansatz Sie können nehmen:

A = [1 2 3] 
num2cell(num2str(A)) 

(natürlich würde man noch die Streubereiche aus dem ans entfernen müssen)

+0

Auch wenn Sie die Streuräume entfernen, haben Sie am Ende ein Zellenfeld mit Strings, das jede Ziffer separat enthält. Tauschen Sie stattdessen die Reihenfolge "num2cell" und "num2str". 'cellfun (@ num2str, num2cell (s), 'UniformOutput', false)' erledigt die Aufgabe gut. – Doresoom

10

arrayfun zusammen mit num2str mit funktionieren würde:

>> A = [12 25 34 466 55] 
A = 
    12 25 34 466 55 

>> arrayfun(@num2str, A, 'UniformOutput', false) 
ans = 
    '12' '25' '34' '466' '55' 
+1

warum nicht 'arrayfun (@ num2str, A, 'UniformOutput', false)'? Gleiches Konzept, gleiche Ausgabe, aber Sie vermeiden die Konvertierungen "von Zelle zu Zelle" und "von Zelle zu Zelle". – gevang

+0

@gevang: +1. Guter Punkt. Ich habe die Antwort aktualisiert. – Kavka

7

Jetzt nach MATLAB 2016b, können Sie einfach

s = [12 25 34 466 55]; 
string(s) 
Verwandte Themen