Игнорировать «персонаж» при использовании Textscan () в Matlab

StackOverflow https://stackoverflow.com/questions/5302578

Вопрос

Я использую 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}. Спасибо!

Это было полезно?

Решение

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

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

Или вы можете прочитать строки, используя %s формат и удалите " персонажи от data{1} используя функцию Стрип:

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 делает магию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top