如何在 MATLAB 中获取这个已删除的 table 中的第二列?

How to take 2nd column in this deliminated table in MATLAB?

我认为 table 是制表符分隔的,所以 TSV 但我的以下代码从未完成,因为行 ecg = tdfread(filename, '\t'); 建议我分隔符 \t 不正确,因为文件大小,大约350MB,应该没问题。

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

关于 AD 单位的数据样本 1 示例

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 列)、开始时间 1 和结束时间 4 的案例。 这可以通过以下 Shai 的命令解决,但它因第二个数据样本

而失败
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 我目前的方法 ecg = dlmread(filename, ' ', 2, 0); 导致 13 列

测试 Shai 的 第二个数据集

% 
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

考虑使用 dlmread 而不是 tdfread:一些 '\t' 字符可能是空格...

作为第二步,您可以丢弃空列

ecg = dlmread(filename, ' ', 2, 0); % read table with empty columns
ecg = ecg(:,find(any(ecg,1)));  % keep only non-empty columns