テーブルはタブで区切られているのでTSVだと思いますが、ファイルサイズは約350 MBで問題ないため、デリミネーターが正しくないことecg = tdfread(filename, '\t');
を提案している行のために、次のコードは終了しません。\t
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
たとえば、チャネル 1 (列 1)、startTime 1、および endTime 4 の場合を呼び出しますgetECG(16265, 1, 1, 4)
。これは、次の Shai のコマンドで解決できますが、2 番目のデータ サンプルで失敗します。
ecg = dlmread(filename, ' ', 2, 0); % read table with empty columns
AD ユニットがデータ処理に失敗したため、物理ユニットを含む 2 番目のデータ セット
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 列につながります
2 番目のデータ セットに対する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 2 番目のデータ列が失敗する 6 列になりましたが、最初の空の列も残っています
データ: WFDB MIT-BIH NSRDB