Я пытаюсь прочитать данные из этого .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',' ');
0
Kulis 21 Авг 2014 в 16:57

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 для каждой ячейки и преобразует строку в число.

1
sclarke81 22 Авг 2014 в 10:53
Работает отлично, но когда я открываю другой файл, я получаю ошибку
 – 
Kulis
21 Авг 2014 в 17:49
В настоящее время я не могу получить доступ к вашей ссылке (интернет-ограничения). Не могли бы вы обновить свой вопрос, указав подробную информацию об ошибке и файле, который ее вызывает?
 – 
sclarke81
21 Авг 2014 в 18:11
1
Я только что проверил ваше изображение и обновил свой ответ, это должна быть правильная идея, но я не могу протестировать ее до утра. Я обновлю его, если это не так.
 – 
sclarke81
21 Авг 2014 в 22:38
1
Я обновил ответ после тестирования сегодня утром. Надеюсь, теперь это есть.
 – 
sclarke81
22 Авг 2014 в 13:52