Ignorieren Sie "Zeichen" bei Verwendung von textScan () in MATLAB
Frage
Ich verwende TextScan, um Daten aus einer Datei zu lesen. Die Daten werden gelesen::
"ABC",0.156
"DEF",0.125
"GHI",0.101
Mein Code ist - data = textscan(fid, '%s %f', 'Delimiter', ',');
Daten {1} kommen als
'"ABC"'
'"DEF"'
'"GHI"'
Ich möchte die Daten {1} als -
'ABC'
'DEF'
'GHI'
Wie kann ich schließlich die Antwort haben als
data =
'ABC' [0.156];
'DEF' [0.125];
'GHI' [0.101];
Anstatt Data {1} und Data {2} zu verwenden. Vielen Dank!
Lösung
Es gibt tatsächlich zwei Möglichkeiten, die zu ignorieren "
Charaktere beim Lesen Ihrer Saiten. Gemäß Textscan Dokumentation können Sie die verwenden %q
Format statt der %s
Format:
data = textscan(fid,'%q %f','Delimiter',',');
Oder Sie können die Saiten mit dem lesen %s
Formatieren und entfernen Sie die "
Charaktere von data{1}
Verwenden der Funktion Strrep:
data{1} = strrep(data{1},'"','');
Dann können Sie die Funktion verwenden Num2cell Um das Array der numerischen Werte in umzuwandeln in data{2}
zu einem Zellarray, damit Sie können verketten es mit der Zellarray von Strings in data{1}
:
>> data = [data{1} num2cell(data{2})];
data =
'ABC' [0.1560]
'DEF' [0.1250]
'GHI' [0.1010]
Andere Tipps
Um die doppelten Zitate zu beseitigen
data = textscan(fid, '%q %f', 'Delimiter', ',');
wo %q
macht die Magie.