Игнорировать " символ при использовании textscan() в MATLAB

я использую textscan для чтения данных из файла. Считываемые данные:

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

мой код - data = textscan(fid, '%s %f', 'Delimiter', ',');

данные{1} приходят как

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

мне нужны данные{1} Как -

'ABC'
'DEF'
'GHI'

наконец, как я могу получить ответ как

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

вместо использования данных{1} и данных{2}. Спасибо!

2 ответов


на самом деле есть два способа игнорировать " символы при чтении ваших строк. Согласно TEXTSCAN документация, вы можете использовать вместо :

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

или вы можете прочитать строки с помощью и удалить " персонажей data{1} С помощью функции STRREP:

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

затем вы можете использовать функцию NUM2CELL для преобразования массив числовых значений в data{2} в массив ячеек, чтобы вы могли объединения это с массивом ячеек строк в data{1}:

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

data =

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

чтобы избавиться от двойных кавычек, используйте

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

здесь %q делает волшебство.