我认为该表是制表符分隔的,因此 TSV 但我的以下代码永远不会完成,因为该行ecg = tdfread(filename, '\t');
建议我分隔符\t
不正确,因为文件大小约为 350 MB,应该没问题。
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
例如,在通道 1(第 1 列)、startTime 1 和 endTime 4 的情况下调用。getECG(16265, 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对第二个数据集的建议
% https://stackoverflow.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