如何滤除指数信号叠加的正弦波?
我做了一个5S的信号,是一个指数信号叠加一个50Hz正弦波现在我希望滤掉50Hz,恢复原来的指数信号,
大家有好方法吗?
dt=1/1000;
t=0:dt:5;
x1=exp(-t);
x2=0.025*sin(2*pi*50*t);
y=x1+x2;
plot(t,y)
xlabel('t(s)'),ylabel('x(t)');title('指数信号叠加50Hz纹波');
grid on 低通滤波。 低通可以吗?
指数信号的频谱是不是也包括50Hz?
跟正弦波频谱混在一起了吧。
能滤掉吗 可以用自适应陷波器,但在数据的开始段,因滤波器从暂态到稳态的过渡,将有较大的起伏。
[ 本帖最后由 songzy41 于 2008-1-18 15:37 编辑 ] 你的指数信号部分x1=exp(-t);指数信号的频谱一般为钟形。
最好把频谱贴出来,看看重叠关系。50Hz没重叠,就传统滤波。重叠了可以考虑一些非常规的方法,如论坛以前有的陷滤波器(我没研究过)。 1。低通滤波
2。最小二乘法去趋势项 谢谢楼上各位,低通滤波器,陷波器都做了。
不知道能不能达到要求。
如果用FFT滤波,会不会效果好点呢?
FFT滤波我还没研究过 可以的,将对应50Hz简单置零,再取逆变换。稍微麻烦一点是,直流可能太大 另外,FFT滤波,在实际中是否有应用呢?
还是这种滤波方法只是理论上的。 我经常用FFT滤波的,它其实是一种理想的滤波器(矩形的),理论的,硬件无法实现。 lz能分享分享你使用的陷滤波器么?是针对某个频率还是某个窄带?我没有研究过,想先了解下。 所谓陷波器,不过就是带阻滤波器
我这个是物理可实现的双T网络陷波器,推导出来的传递函数
再送入matlab中
代码如下:
b=;
a=;
=freqs(b,a,0:0.1:3000);%滤波器的复数频率特性
magH=abs(H);
phaH=unwrap(angle(H))*180/pi;%化为角度
figure(1)
subplot(211),plot(w/(2*pi),20*log10(magH))
xlabel('频率/Hz');ylabel('振幅/dB')
grid on
subplot(212),plot(w/2/pi,phaH)
xlabel('频率/Hz');ylabel('相位/度^o')
grid on 再问个问题吧。
小波中是否有方法可以这样滤波呢? matlab有专门的小波去噪函数,我用来去过白噪声,但也是缺乏研究,期待lz开发。 本帖最后由 wdhd 于 2016-9-8 14:52 编辑
原帖由 rockzone 于 2008-1-18 19:32 发表
所谓陷波器,不过就是带阻滤波器
我这个是物理可实现的双T网络陷波器,推导出来的传递函数
再送入matlab中
代码如下:
b=;
a=;
=freqs(b,a,0:0.1:3000);%滤波器的复 ...
用楼主给的陷波器系数对1层的数据进行滤波:
z=filter(b,a,y)
滤波的结果和楼主在7层给的滤波结果相差甚远,不知楼主7层的滤波结果是怎么得到的?
页:
[1]
2