Как взять 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
Другие вопросы по тегам