Я пытаюсь написать функцию для чтения нескольких (1000+) текстовых файлов ('.txt') в MATLAB. Ниже приведен фрагмент одного файла. Фактический файл имеет те же столбцы, но с ~ 150 000 строк.Чтение больших текстовых файлов в MATLAB
Start, Serial, DeviceId, RunNumber, Date, Real, Elapsed, X, EcgVal, EcgStatus, CapnoVal, CapnoStatus, P1Val, P1Status, P2Val, P2Status, P3Val, P3Status, Spo2Val, Spo2Status, CprDepth, CprFrequency, CprStatus, CprWaveVal, FiltEcgVal, FiltEcgStatus, Ecg2Val, Ecg2Status, Ecg3Val, Ecg3Status, Ecg4Val, Ecg4Status
2013-01-01 23:51:12, 00017711, TEMS ACP272, , 01-01-2013, 23:51:12.000, 00:00:00.000, 41275.993889, 0.000000, -1, 0.000000, 0, 0.000000, 0, 0.000000, 0, 0.000000, 0, 0.000000, 0, 0.000000, 0, 0, 0.000000, 0.000000, 1, 0.000000, 1, 0.000000, 1, 0.000000, 1
2013-01-01 23:51:12, 00017711, TEMS ACP272, , 01-01-2013, 23:51:12.008, 00:00:00.008, 41275.993889, 0.000000, -1, 0.000000, 0, 0.000000, 0, 0.000000, 0, 0.000000, 0, 0.000000, 0, 0.000000, 0, 0, 0.000000, 0.000000, 1, 0.000000, 1, 0.000000, 1, 0.000000, 1
2013-01-01 23:51:12, 00017711, TEMS ACP272, , 01-01-2013, 23:51:12.016, 00:00:00.016, 41275.993889, 0.000000, -1, 0.000000, 0, 0.000000, 0, 0.000000, 0, 0.000000, 0, 0.000000, 0, 0.000000, 0, 0, 0.000000, 0.000000, 1, 0.000000, 1, 0.000000, 1, 0.000000, 1
2013-01-01 23:51:12, 00017711, TEMS ACP272, , 01-01-2013, 23:51:12.024, 00:00:00.024, 41275.993889, 0.000000, -1, 0.000000, 0, 0.000000, 0, 0.000000, 0, 0.000000, 0, 0.000000, 0, 0.000000, 0, 0, 0.000000, 0.000000, 1, 0.000000, 1, 0.000000, 1, 0.000000, 1
Я пробовал очевидные подходы (csvread, dlmread, importdata) без успеха. Когда я открываю этот файл с помощью функции «ImportData», я получаю:
þS
, а затем 5 пустых строк. Использование
fid = fopen('TEST.txt','r');
fgetl(fid)
Я нахожу, что между каждой строкой данных имеется пустая строка и что между каждым символом есть пробел.
Я также попытался использовать TextScan функцию следующим образом
fid = fopen('TEST.txt','r');
c = textscan(fid, '%s', 'Delimiter', ',')
но это возвращает пустую ячейку.
Альтернативой, которая работает, является открытие файла в Excel и сохранение его в виде файла CSV. Однако, учитывая, что я пытаюсь сделать это для 1000+ файлов, это невозможно.
Любые комментарии, предложения или советы приветствуются. Спасибо!
UPDATE:
Следующая, кажется, работает:
data = textscanu('TEST.txt');
str=textscan(data{1},'%s','Delimiter',',')
Я буду стараться, чтобы написать это в общем, чтобы прочитать весь файл, пропускать пустые строки, а также организовать все столбцы.
И хранить все, начиная со второй строки эти 32 столбцов в 'N x 32' размер ячейки для каждого текстового файла? – Divakar
Да, это нормально. Я не слишком придирчив к формату - я могу переформатировать/упорядочить данные после их импорта. – DrDunkenstein
как сохранить ваши файлы txt для начала? возможно ли, что они закодированы в некоторых 16 бит на символ вместо 8 бит на символ? возможно, какой-нибудь юникод? – Shai