2016-07-10 3 views
1

私は、edDataを読み込むために私はplotDataという変数に格納しています。私は楕円フィルターを実装して、チャンネルの1つから7-9 Hz(アルファバンド)を抽出する方法を知りたいと思います。edfデータのためのmatlabの楕円フィルタの使い方

plotDataに格納されたEDFデータは以下のようになります。

plotData = 

      ver: 0 
     patientID: 'test                   ' 
     recordID: 'test                   ' 
     startdate: '23.06.16' 
     starttime: '12.10.38' 
      bytes: 9472 
     records: 3 
     duration: 1 
      ns: 36 
      label: {1x36 cell} 
    transducer: {1x36 cell} 
      units: {1x36 cell} 
    physicalMin: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 
    physicalMax: [1x36 double] 
    digitalMin: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 
    digitalMax: [1x36 double] 
     prefilter: {1x36 cell} 
     samples: [1x36 double] 
+0

こんにちは。あなたの質問は実際にEDFファイルに限られていないと思います。しかし、EDFファイルで使用されているサンプル周波数に応じてフィルタを設計してください。 –

答えて

1

私が正しくて、あなたのEDFデータを理解していれば、36個のサンプル(nsは)あなたに36Hzのサンプリングレートを与える、duration 1の第2の上にあります。

デジタル楕円フィルタの設計は、組み込みのellip関数を使用して行うことができます。通過帯域のリップル、阻止帯域の減衰と遷移帯域について、フィルタ要件を記入する必要があります。あなたはその後、freqzと結果の応答を可視化(および必要に応じて調整する)ことができます

fs = 36; % sampling rate in Hz 
fmin = 7; % minimum passband frequency in Hz 
fmax = 9; % maximum passband frequency in Hz 
order = 5; % filter order (the higher the narrower the transition band) 
Rs = 20; % stopband attenuation in dB 
Rp = 1; % passband ripples in dB 

[b,a] = ellip(order, Rp, Rs, [fmin/(fs/2), fmax/(fs/2)]); 

:例として提供されるいくつかのパラメータを使用すると、これは次のようになります。

最後に

enter image description here

、あなたは上の設計されたフィルタ係数abとご入力plotDatafilter機能を使用したい、あなたのデータをフィルタリングする:

上記のパラメータについては、周波数応答は次のようになります。
filtered_data = filter(b,a,plotData); 
関連する問題