【问题标题】:Filter the noise from EEG signal过滤脑电信号中的噪声
【发布时间】:2012-12-10 12:48:30
【问题描述】:

我最近记录了EEG信号,采样率为256Hz。信号将在4-64Hz频段通过。我需要一个代码来过滤脑电数据。matlab中是否有任何类型的过滤器最适合过滤伪影还是信号中的噪音??

【问题讨论】:

  • 您可以使用butter 和filter/filtfilt 函数,具体取决于您的要求。您可能还需要一个 50/60Hz 的陷波滤波器。

标签: filter matlab


【解决方案1】:

您可以在 50 或 60 Hz 处应用陷波滤波器

眼球运动产生的伪影通常具有 2-5 Hz 的频率范围,因此您可以在其中应用高通滤波器。

小波具有阈值机制,可使用小波包分解过滤掉噪声(硬阈值和软阈值)。

【讨论】:

    【解决方案2】:

    如果您的 Fs =1000 Hz,请使用此代码过滤信号并提取特征波段(alpha、beta、...)

    S = "your EEG-Data-Row";
    waveletFunction = 'db8' OR 'sym8' ;
    [C,L] = wavedec(S,8,waveletFunction);
    %% Calculation The Coificients Vectors
    cD1 = detcoef(C,L,1);                   %NOISY
    cD2 = detcoef(C,L,2);                   %NOISY
    cD3 = detcoef(C,L,3);                   %NOISY
    cD4 = detcoef(C,L,4);                   %NOISY
    cD5 = detcoef(C,L,5);                   %GAMA
    cD6 = detcoef(C,L,6);                   %BETA
    cD7 = detcoef(C,L,7);                   %ALPHA
    cD8 = detcoef(C,L,8);                   %THETA
    cA8 = appcoef(C,L,waveletFunction,8);   %DELTA
    %%%% Calculation the Details Vectors
    D1 = wrcoef('d',C,L,waveletFunction,1); %NOISY
    D2 = wrcoef('d',C,L,waveletFunction,2); %NOISY
    D3 = wrcoef('d',C,L,waveletFunction,3); %NOISY
    D4 = wrcoef('d',C,L,waveletFunction,4); %NOISY
    D5 = wrcoef('d',C,L,waveletFunction,5); %GAMMA
    D6 = wrcoef('d',C,L,waveletFunction,6); %BETA
    D7 = wrcoef('d',C,L,waveletFunction,7); %ALPHA
    D8 = wrcoef('d',C,L,waveletFunction,8); %THETA
    A8 = wrcoef('a',C,L,waveletFunction,8); %DELTA
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2020-09-16
      • 2012-12-18
      • 2021-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 1970-01-01
      • 2012-09-18
      相关资源
      最近更新 更多