2016-03-26 16 views
0

Ich verwende diesen Code, um die eingegebene Zeichenfolge durch Textfeld, das Text wie folgt enthalten (1,1,1,3,4,7,9,9, 9) und dann geteilt ich es hängt davon ab, jede Zahl in Array zu speichern, wie das Ergebnis in Matlab, aber das Problem, als ich bin mit str2double für Temp-I-Fehler geben, ich glaube, ich bin mit ihm an der falschen StelleSpeichern Zeichenfolge nach dem Splitten als Anzahl in Array in Matlab

Code:

points = get(handles.pointstxt,'String'); 
tmp = regexp(points,'([^ ,:]*)','tokens'); 
tmp 
notesvector = cat(2,tmp{:}) 

Das Ergebnis wird wie folgt dargestellt: enter image description here

Aber ich will es so machen: enter image description here

+0

ein lauffähiges Beispiel nennen und angeben, was die Fehlermeldung in voll ist. Wo wird 'str2double' verwendet? Ist "Punkte" nur die Saite "1,1,1,3,4,7,9,9,9"? Sie können 'textscan' verwenden, um die Zeichenfolge direkt in Doppel zu konvertieren. – horchler

+0

Ich möchte nicht textscan verwenden, weil es mir das Ergebnis gibt als eine Zelle nicht wie Array jede Zahl in einer Zelle, über die Verwendung von str2double Ich habe es hier verwendet: notesvector = cat (2, str2double (tmp {:})) aber es ist falsch, weil es nicht alle Daten gleichzeitig konvertieren kann! –

+0

Was ist falsch an einem Zellenfeld? Wenn Sie es in ein Array konvertieren möchten, verwenden Sie einfach 'double_array = [double_cell_array {:}];'. Wenn Sie 'str2double' verwenden wollen, übergeben Sie ihm ein Zellenfeld:' str2double (tmp) '. – horchler

Antwort

0
points = get(handles.pointstxt,'String'); 
tmp = regexp(points,'([^ ,:]*)','tokens'); 
notesvector = cat(2,tmp{:}) 
c = str2double(notesvector) 
+0

@ JeffreyBosboom Dies soll die vollständige Antwort sein, per [OP-Kommentar] (http://StackOverflow.com/q/36240927/#comment60115264_36240927) –