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!

Était-ce utile?

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', ',');

%q fait la magie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top