【发布时间】:2012-12-10 12:48:30
【问题描述】:
我最近记录了EEG信号,采样率为256Hz。信号将在4-64Hz频段通过。我需要一个代码来过滤脑电数据。matlab中是否有任何类型的过滤器最适合过滤伪影还是信号中的噪音??
【问题讨论】:
-
您可以使用
butter和filter/filtfilt函数,具体取决于您的要求。您可能还需要一个 50/60Hz 的陷波滤波器。
我最近记录了EEG信号,采样率为256Hz。信号将在4-64Hz频段通过。我需要一个代码来过滤脑电数据。matlab中是否有任何类型的过滤器最适合过滤伪影还是信号中的噪音??
【问题讨论】:
butter 和filter/filtfilt 函数,具体取决于您的要求。您可能还需要一个 50/60Hz 的陷波滤波器。
您可以在 50 或 60 Hz 处应用陷波滤波器
眼球运动产生的伪影通常具有 2-5 Hz 的频率范围,因此您可以在其中应用高通滤波器。
小波具有阈值机制,可使用小波包分解过滤掉噪声(硬阈值和软阈值)。
【讨论】:
如果您的 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
希望这会有所帮助。
【讨论】: