我在MATLAB中有一個簡單的腦電信號,如下圖所示。我想要的是根據下表提取EEG的組件。從MATLAB中的信號中提取腦電信號
- Delta - 高達4 Hz;
- 西塔 - 4 - > 8赫茲
- 阿爾法 - 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);
任何建議如何我可以解決這個問題?
感謝所有
嗨Hephaestus,謝謝你的回答!對於過濾器邊緣的銳化意味着什麼?也許減少阻帶頻率的值? – 2011-05-05 18:06:27
您使用Fstop1 = 3; ,但您的信號範圍爲0至4 kHz。因此,你會在邊緣丟失一些信號。例如,我會選擇3.98。它使濾波器更大。但是,精度會更好,差異可能會很大。 – Hephaestus 2011-05-05 18:09:15