Domanda

Sto usando textSCAN per leggere i dati da un file. L'essere di lettura dei dati è:

"ABC",0.156
"DEF",0.125
"GHI",0.101

Il mio codice è - data = textscan(fid, '%s %f', 'Delimiter', ',');

Dati {1} vengono come

'"ABC"'
'"DEF"'
'"GHI"'

Voglio i dati {1} come -

'ABC'
'DEF'
'GHI'

Infine, come posso avere la risposta, come

data = 
'ABC' [0.156];
'DEF' [0.125];
'GHI' [0.101];

invece di utilizzare i dati {1} e {2} dati. Grazie!

È stato utile?

Soluzione

In realtà ci sono due modi per ignorare i caratteri " durante la lettura tue corde. Come per la documentazione textSCAN , è possibile utilizzare il formato %q al posto del formato %s:

data = textscan(fid,'%q %f','Delimiter',',');

In alternativa, è possibile leggere le stringhe utilizzando il formato %s e rimuovere i caratteri " dal data{1} utilizzando la funzione di STRREP :

data{1} = strrep(data{1},'"','');

Quindi è possibile utilizzare la funzione NUM2CELL per convertire la matrice di valori numerici in data{2} ad una matrice di celle in modo da poter concatenate con matrice di celle di stringhe in data{1}:

>> data = [data{1} num2cell(data{2})];

data =

    'ABC'    [0.1560]
    'DEF'    [0.1250]
    'GHI'    [0.1010]

Altri suggerimenti

Al fine di sbarazzarsi dei virgolette usare

data = textscan(fid, '%q %f', 'Delimiter', ',');

dove %q fa la magia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top