我在MATLAB中有一个简单的脑电信号,如下图所示。我想要的是根据下表提取脑电图的成分。
在第一次尝试解决这个问题时,我尝试用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);我有什么建议可以解决这个问题吗?
感谢所有
发布于 2011-05-05 21:39:36
一种更简单的方法可能是简单地取FFT和零出频率分量,而不是你可能感兴趣的特定范围,然后反FFT回到时域。
请记住,你必须将正频率和负频率归零,以保持频域上的信号在0频率上是共轭对称的。,如果你不这样做,你会得到一个复杂的信号,在计算反FFT。
编辑:例如,下面的代码在时域产生两个正弦波,相应的DFT (用FFT计算),然后去掉其中一个峰值。
t = 0:0.01:0.999;
x = sin(t*2*pi*4) + cos(t*2*pi*8);
subplot(2,2,1);
plot(x)
title('time domain')
subplot(2,2,2);
xf = fft(x);
plot(abs(xf))
title('frequency domain');
subplot(2,2,3);
xf(9) = 0; xf(93) = 0; % manual removal of the higher frequency
plot(abs(xf));
title('freq. domain (higher frequency removed)');
subplot(2,2,4);
plot(ifft(xf));
title('Time domain (with one frequency removed)')有几件事要注意。DFT中的频域有几个不同的范围:直流偏移(常数)是0频率;正频率范围(对于长度为N个原始信号)是从1到N/2的条目;负频率范围是从N/2到N1的条目;注意,这不是一个错误,最高频率(N/2处的频率)是重复的,对于正负频率都是相同的。(有些人使用fftshift来显示这一点,就像人类可能会画它一样,但这实际上只是为了外观/理解。)
至于要移除的频率,你必须自己弄清楚,但我可以给你一个提示。最高频率(在频率位置N/2)将对应于系统表示的最高频率,即fs/2,其中fs是您的采样率。您可以相应地缩放,以确定哪些是否定的。
如果你没有正确地否定相应的负频率,你将得到一个假想信号的逆fft。
最后一条评论。这种方法只有在您拥有提前拥有所有信号的奢侈条件下才能工作,因为您需要在整个信号上使用DFT。如果您想实时执行此操作,则需要像以前一样创建某种类型的筛选器。
发布于 2011-05-05 17:59:23
如果过滤器对其长度没有任何限制,请为过滤器选择更锐化的边缘。如果我是在你的鞋,我会建立不同的过滤器(低通和高通),并处理的结果在傅里叶变换,以看到任何高频或低频是混合的频率范围。1)构造低通,提取δ2)为θαβ3构建带通,建立高通滤波器,提取伽马。
https://stackoverflow.com/questions/5901927
复制相似问题