Я пытаюсь прочитать данные из этого .txt:
obiekt.DEF
Timeplot
Column01: P abs h01 L1 [W]
Column02: P abs h01 L2 [W]
Column03: P abs h01 L3 [W]
Column04: P abs h01 Sum [W]
Time Column01 Column02 Column03 Column04
11.03.2004 09:17:02 23500 19812 21529 64,84e+3
11.03.2004 09:17:05 23316 19789 21519 64,62e+3
11.03.2004 09:17:08 23207 19759 21392 64,36e+3
Мне нужны только данные из столбца: 01,02,03. В некоторых данных есть ',' вместо '.'. Как это поменять? У меня много таких файлов. Я пробовал эту функцию, но она записывает все данные в одну переменную.
b=textread('test.txt','%s','delimiter',' ','whitespace',' ');
1 ответ
Вы можете использовать TextScan:
filename='myfile.txt';
fid=fopen(filename,'r');
data=textscan(fid,'%*s%*s%s%s%s%*s','HeaderLines',10,'CollectOutput',1);
fclose(fid);
data=strrep(data{1},',','.');
data=cellfun(@str2num, data);
Параметр HeaderLines
устанавливает игнорирование первых 10 строк. Установка CollectOutput
группирует элементы одного типа в массив ячеек (так что мы получаем 3 столбца строк). Спецификация формата '%*s%*s%s%s%s%*s'
игнорирует дату, время и Column04 и преобразует Column01-03 в строки. Затем strrep
заменяет запятые точками. cellfun
вызывает str2num
для каждой ячейки и преобразует строку в число.
Похожие вопросы
Новые вопросы
matlab
MATLAB - это высокоуровневая языковая и интерактивная среда программирования для численных расчетов и визуализации, разработанная MathWorks. Не используйте оба тега [matlab] и [octave], если явно не задан вопрос о сходстве или различии между ними. При использовании этого тега, пожалуйста, укажите версию MATLAB, с которой вы работаете (например, R2017a).