Ignorar "carácter cuando se usa textscan () en matlab
Pregunta
Estoy usando TextScan para leer datos de un archivo. Los datos que se leen son:
"ABC",0.156
"DEF",0.125
"GHI",0.101
Mi código es - data = textscan(fid, '%s %f', 'Delimiter', ',');
Los datos {1} vienen como
'"ABC"'
'"DEF"'
'"GHI"'
Quiero los datos {1} como -
'ABC'
'DEF'
'GHI'
Finalmente, ¿cómo puedo tener la respuesta como
data =
'ABC' [0.156];
'DEF' [0.125];
'GHI' [0.101];
en lugar de usar datos {1} y datos {2}. ¡Gracias!
Solución
En realidad, hay dos formas de ignorar el "
personajes al leer tus cuerdas. Según el Paquillo de texto documentación, puede usar el %q
formato en lugar del %s
formato:
data = textscan(fid,'%q %f','Delimiter',',');
O puedes leer las cadenas usando el %s
formatear y eliminar el "
personajes de data{1}
Usando la función Strrep:
data{1} = strrep(data{1},'"','');
Entonces puedes usar la función Num2 célula para convertir la matriz de valores numéricos en data{2}
a una matriz de celdas para que puedas concatenar con la matriz celular de cuerdas en data{1}
:
>> data = [data{1} num2cell(data{2})];
data =
'ABC' [0.1560]
'DEF' [0.1250]
'GHI' [0.1010]
Otros consejos
Para deshacerse del uso de doble citas
data = textscan(fid, '%q %f', 'Delimiter', ',');
dónde %q
hace la magia.