0

テーブルはタブで区切られているので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

4

1 に答える 1