heikeyang 发表于 2007-8-12 23:22

butterworth低通滤波

设计了个低通butterworth数字滤波器

fs=100;wp=0.08;ws=0.16;rp=1;rs=35;
=buttord(wp,ws,rp,rs);   
=butter(n,wn);         
freqz(b,a);

结果为n=7,截至频率wn=0.09128933135163


不知道设计数字滤波器是否成功。效果如何。
频响图为:

HolySaint 发表于 2007-8-13 00:25

找个信号滤一下波试试

弄个简单的正弦或者多个正弦

songzy41 发表于 2007-8-13 07:36

从频响图上看符合楼主的要求。滤波器设计是成功的,滤波效果应达到设计的要求。

heikeyang 发表于 2007-8-13 13:36

谢谢楼上!!。
现在又有两个问题:
(1)经过对原始数据的试验,滤波效果很明显,基本达到我的要求。只需对通带频率进行适当调整即可。但有一个奇怪的现象,滤波数据的前面20个点的数值经滤波后变得很小,从很小值逐渐升至正常的值。见图1和图2。
(2)我的待滤数据是杂乱无序的波形,是不是滤波阶次越高对峰值的削弱越多,有没有什么方法来对削弱后的峰值进行补偿。见图3。

songzy41 发表于 2007-8-13 17:03

本帖最后由 wdhd 于 2016-9-7 15:27 编辑

原帖由 heikeyang 于 2007-8-13 13:36 发表
现在又有两个问题:
(1)经过对原始数据的试验,滤波效果很明显,基本达到我的要求。只需对通带频率进行适当调整即可。但有一个奇怪的现象,滤波数据的前面20个点的数值经滤波后变得很小,从很小值逐渐升至正常的值。见图1和图2。
(2)我的待滤数据是杂乱无序的波形,是不是滤波阶次越高对峰值的削弱越多,有没有什么方法来对削弱后的峰值进行补偿。见图3。


这两个现象都是正常的。
1,在信号没有输入之前滤波器的输入为0,在信号输入后滤波器有一个达到稳定的过程,这个过程有可能短有可能长,取决 滤波器的特性。
2,一般尖锐的峰值都含有丰富的高频成分,而滤波器是一个低通,把高频全过滤掉了,只留下低频成分,所以峰值就会图示那样。

heikeyang 发表于 2007-8-14 09:14

好的。谢谢!我也请教过一个老师,他说也正常。滤波的阶次越高,峰值的削弱就越明显。但是数据稳定段就比较讨厌了 。这次不得不舍弃一些数据了。

heikeyang 发表于 2007-8-14 15:59

刚才看了一个函数filtfilt代替filter,从帮助上看filtfilt函数能对数据进行预处理,然后避免开始阶段的振荡。同时能够解决相位滞后的问题。试试看看效果如何!!总之很感激songzy41,给了我这么多的帮助和指导。

heikeyang 发表于 2007-8-14 22:12

顶下帖子,不知道各位有没有用过filtfilt的。效果是不是比filter好些!!

songzy41 发表于 2007-8-15 09:07

函数filtfilt是一个零相位的数字滤波,它对数据进行正反二次滤波。这函数的优点是解决相位滞后的问题,但是不能避免开始阶段的振荡。
页: [1]
查看完整版本: butterworth低通滤波