Игнорировать «персонаж» при использовании 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}. Спасибо!
Решение
На самом деле есть два способа игнорировать "
персонажи при чтении ваших струн. В соответствии с Текстовые тексты Документация, вы можете использовать %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
делает магию.