Ignorer "caractère lors de l'utilisation textscan () dans Matlab
Question
J'utilise textscan pour lire les données à partir d'un fichier. Les données de lecture étant est:
"ABC",0.156
"DEF",0.125
"GHI",0.101
Mon code est - data = textscan(fid, '%s %f', 'Delimiter', ',');
données {1} viennent comme
'"ABC"'
'"DEF"'
'"GHI"'
Je veux les données {1} comme -
'ABC'
'DEF'
'GHI'
Enfin, comment puis-je avoir la réponse que
data =
'ABC' [0.156];
'DEF' [0.125];
'GHI' [0.101];
au lieu d'utiliser des données {1} et {2} données. Merci!
La solution
Il y a en fait deux manières d'ignorer les caractères "
lors de la lecture de vos chaînes. Conformément à la textscan documentation, vous pouvez utiliser le format %q
au lieu du format %s
:
data = textscan(fid,'%q %f','Delimiter',',');
Vous pouvez lire les chaînes en utilisant le format de %s
et de supprimer les caractères "
de data{1}
en utilisant la fonction STRREP :
data{1} = strrep(data{1},'"','');
Ensuite, vous pouvez utiliser la fonction NUM2CELL pour convertir le tableau de des valeurs numériques dans data{2}
à un réseau de cellules de sorte que vous pouvez concatenate avec le réseau de cellules de chaînes en data{1}
:
>> data = [data{1} num2cell(data{2})];
data =
'ABC' [0.1560]
'DEF' [0.1250]
'GHI' [0.1010]
Autres conseils
Afin de se débarrasser des guillemets doubles utilisez
data = textscan(fid, '%q %f', 'Delimiter', ',');
où %q
fait la magie.