Игнорировать "символ" при использовании textcan () в MATLAB - PullRequest
6 голосов
/ 14 марта 2011

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

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

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

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

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

Я хочу данные {1}as -

'ABC'
'DEF'
'GHI'

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

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

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

Ответы [ 2 ]

4 голосов
/ 14 марта 2011

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

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

Или вы можете прочитать строки в формате %s и удалить символы " из 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]
1 голос
/ 14 марта 2011

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

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

, где %q делает магию.

...