Как взять 2-й столбец в этой исключенной таблице в MATLAB?
Я думаю, что таблица разделена табуляцией, поэтому TSV, но мой следующий код никогда не заканчивается из-за строки ecg = tdfread(filename, '\t');
предлагая мне, что разделитель \t
не может быть правильным, потому что размер файла, около 350 МБ, должен быть в порядке.
function ecg = getECG(id, channel, timeStartIndex, timeEndIndex)
filename = sprintf('/home/masi/Documents/NSRDB/%d.txt', id);
ecg = tdfread(filename,'\t');
ecg = ecg(timeStartIndex:timeEndIndex, channel);
end
Пример данных 1 пример о блоках AD
masi@masiAsus:~/Documents$ head NSRDB/16265.txt
0 -33 -65
1 -31 -65
2 -39 -61
3 -41 -61
4 -37 -59
5 -31 -53
6 -27 -47
7 -19 -37
8 -15 -27
9 -13 -19
Позвони например getECG(16265, 1, 1, 4)
для случая на канале 1 (столбец 1), startTime 1 и endTime 4. Это может быть решено с помощью следующей команды Shai, но это не удается с 2-й выборкой данных
ecg = dlmread(filename, ' ', 2, 0); % read table with empty columns
Второй набор данных с физическими единицами, потому что блоки AD не удалось обработать данные
NSRDB/16265.txt
Elapsed time ECG1 ECG2
(seconds) (mV) (mV)
300.000 -0.005 -0.065
300.008 -0.015 -0.055
300.016 0.005 -0.055
300.023 0.005 -0.075
Рис. 1 Мой текущий appproach ecg = dlmread(filename, ' ', 2, 0);
приводит к 13 столбцам
Тестирование предложения Шая для второго набора данных
% https://stackru.com/a/40516998/54964
ecg = dlmread(filename, ' ', 2, 0); % read table with empty columns
ecg = ecg(:,find(any(ecg,1))); % keep only non-empty columns
Рис. 2 Шесть столбцов теперь, где второй столбец данных терпит неудачу, но также есть еще первый пустой столбец
Данные: WFDB MIT-BIH NSRDB
1 ответ
Рассмотреть возможность использования dlmread
вместо tdfread
: некоторые из '\t'
символы могут быть пробелами...
Вы можете отказаться от пустых столбцов в качестве второго шага
ecg = dlmread(filename, ' ', 2, 0); % read table with empty columns
ecg = ecg(:,find(any(ecg,1))); % keep only non-empty columns