【发布时间】:2011-08-19 14:30:36
【问题描述】:
我在 MATLAB 中有一个简单的 EEG 信号,如下图所示。而我想要的是根据下表提取脑电图的成分。
- Delta - 高达 4 Hz;
- Theta - 4 -> 8 Hz
- 阿尔法 - 8 -> 13 赫兹
- 测试版 - 13 -> 30 赫兹
- 伽玛 - 30 -> 100 赫兹
在第一次尝试解决这个问题时,我尝试使用 MATLAB 中的“fdatool”构建带通滤波器,以提取分量“theta”信号,但没有成功。
附上使用“fdatool”获得的过滤器的代码。
function Hd = filt_teta
%FILTROPARA TETA Returns a discrete-time filter object.
%
% M-File generated by MATLAB(R) 7.9 and the Signal Processing Toolbox 6.12.
%
% Generated on: 05-May-2011 16:41:40
%
% Butterworth Bandpass filter designed using FDESIGN.BANDPASS.
% All frequency values are in Hz.
Fs = 48000; % Sampling Frequency
Fstop1 = 3; % First Stopband Frequency
Fpass1 = 4; % First Passband Frequency
Fpass2 = 7; % Second Passband Frequency
Fstop2 = 8; % Second Stopband Frequency
Astop1 = 80; % First Stopband Attenuation (dB)
Apass = 1; % Passband Ripple (dB)
Astop2 = 80; % Second Stopband Attenuation (dB)
match = 'stopband'; % Band to match exactly
% Construct an FDESIGN object and call its BUTTER method.
h = fdesign.bandpass(Fstop1, Fpass1, Fpass2, Fstop2, Astop1, Apass, ...
Astop2, Fs);
Hd = design(h, 'butter', 'MatchExactly', match);
有什么建议可以解决这个问题吗?
谢谢大家
【问题讨论】: