rockzone 发表于 2008-1-17 21:31

如何滤除指数信号叠加的正弦波?

我做了一个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

hyl2323 发表于 2008-1-18 08:12

低通滤波。

rockzone 发表于 2008-1-18 09:49

低通可以吗?
指数信号的频谱是不是也包括50Hz?
跟正弦波频谱混在一起了吧。

能滤掉吗

songzy41 发表于 2008-1-18 11:44

可以用自适应陷波器,但在数据的开始段,因滤波器从暂态到稳态的过渡,将有较大的起伏。

[ 本帖最后由 songzy41 于 2008-1-18 15:37 编辑 ]

hyl2323 发表于 2008-1-18 13:09

你的指数信号部分x1=exp(-t);指数信号的频谱一般为钟形。
最好把频谱贴出来,看看重叠关系。50Hz没重叠,就传统滤波。重叠了可以考虑一些非常规的方法,如论坛以前有的陷滤波器(我没研究过)。

VibrationMaster 发表于 2008-1-18 13:24

1。低通滤波
2。最小二乘法去趋势项

rockzone 发表于 2008-1-18 15:05

谢谢楼上各位,低通滤波器,陷波器都做了。
不知道能不能达到要求。

如果用FFT滤波,会不会效果好点呢?
FFT滤波我还没研究过

VibrationMaster 发表于 2008-1-18 15:10

可以的,将对应50Hz简单置零,再取逆变换。稍微麻烦一点是,直流可能太大

rockzone 发表于 2008-1-18 15:27

另外,FFT滤波,在实际中是否有应用呢?

还是这种滤波方法只是理论上的。

hyl2323 发表于 2008-1-18 19:22

我经常用FFT滤波的,它其实是一种理想的滤波器(矩形的),理论的,硬件无法实现。

hyl2323 发表于 2008-1-18 19:23

lz能分享分享你使用的陷滤波器么?是针对某个频率还是某个窄带?我没有研究过,想先了解下。

rockzone 发表于 2008-1-18 19:32

所谓陷波器,不过就是带阻滤波器
我这个是物理可实现的双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

rockzone 发表于 2008-1-18 19:53

再问个问题吧。
小波中是否有方法可以这样滤波呢?

hyl2323 发表于 2008-1-19 10:00

matlab有专门的小波去噪函数,我用来去过白噪声,但也是缺乏研究,期待lz开发。

songzy41 发表于 2008-1-19 14:37

本帖最后由 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
查看完整版本: 如何滤除指数信号叠加的正弦波?