2017-01-08 8 views
0

Ich habe einige Daten aus einer Excel-Datei in Matlab gelesen. Ein Zellenfeld wurde wie folgt generiert:Wie kann ich ein Zellen-Array in Matlab in ein numerisches Array konvertieren?

x={'11', 'NaN', 'NaN', '13', 24} 

I Zellenfeld mit einer numerischen Matrix (für andere erforderliche Berechnungen) und konvertieren ‚NaN‘ Elemente auf Null in meiner numerischen Matrix konvertieren möchten. Wie kann ich es tun?

Vielen Dank.

Antwort

2

können Sie str2double verwenden Strings in numerische Werte zu konvertieren:

x={'11', 'NaN', 'NaN', '13', '24'}; 
nx = str2double(x); 

Sobald Sie numerische Werte haben, können Sie die nan s mit Nullen ersetzen:

nx(isnan(nx))=0 
+0

@Yaser, das wird nicht funktionieren, wenn der Eingang wie in der Frage ist - den letzten Wert (24) ist eine Zahl, keine Zeichenfolge. Siehe [meine Antwort] (https://stackoverflow.com/a/41530933/2627163), um damit umzugehen. – EBH

0

Im Beispiel Sie gab in die Frage gibt es einen gemischten Inhalt (Strings und Zahlen), so dauert es 2 Schritten:

x = {'11', 'NaN', 'NaN', '13', 24}; % last value is a number 
isch = cellfun(@isstr,x); % find all strings 
numx(isch) = str2double(x(isch)); % convert the strings to numbers, and place the correcly 
numx(~isch) = cell2mat(x(~isch)); % extract the numbers and place the correcly 

Dann können Sie alle NaN s mit Nullen ersetzt werden:

numx(isnan(numx)) = 0; 

das Ergebnis:

numx = 

    11  0  0 13 24 
Verwandte Themen