xianglove 发表于 2005-11-2 09:36

[讨论]滤波器设计

本帖最后由 wdhd 于 2016-9-1 13:49 编辑

  现在遇到这样一个问题,被测信号的频率范围是10~1000Hz,采样频率设为4KHz。由于采样信号中含有低频分量,对此后的积分产生很大的影响,所以要用高通滤波器把小于10Hz的信号分量虑除。

  用matlab中的函数设计滤波器, = BUTTER(N,Wn,'high'),N为滤波器阶数,令N=4;Wn为截止频率,Wn=2f/Fs=20/4000=0.005。据此设计出A、B参数。

  问题:采样频率与边缘频率相差太大,使得Wn很小,有人设计过这样的滤波 器吗?

  设计出的A、B用双精度运算,可以满足设计要求,但把它放在单片机里运算,由于我们使用的单片机只能存单精度的,所以使得滤波效果不太理想。请问有没有其他好的解决办法?

NASA 发表于 2005-11-2 15:41

回复:(xianglove)[讨论]滤波器设计

试一下afd_butt

simon21 发表于 2005-11-3 07:52

回复:(xianglove)[讨论]滤波器设计

建议看一下《信号处理滤波器设计——基于MATLAB和Mathematica的设计方法》这本书,上面有很多实例,另外matlab设计滤波器不只是BUTTER一个命令,还有很多,比如楼上提到的,你现比较一下那种更适合你的情况

xianglove 发表于 2005-11-3 12:31

本帖最后由 wdhd 于 2016-9-1 13:50 编辑

  多谢楼上指点!

  几个滤波器我都试过了,由于Wn太小,所以都要求A、B参数有足够的精度才行。如果提高Wn的值,等于0.3、0.4的话,A、B的精度就可以减少,同时不影响滤波器性能。

  由于Keil C编译不支持双精度,所以现在的问题是要“寻找一个高精度乘法的算法”了。哪位大侠有相关的经验吗?

xianglove 发表于 2005-11-4 16:08

我改成用二阶滤波器了,系数的精度要求不高,只要有四位有效数字就可以满足了。试验了一下,已基本达到要求,当然还有测量的精度要进行研究,有问题还有向大伙请教哦~~~

fxdq 发表于 2006-5-11 13:45

回复:(warren)回复:(xianglove)[讨论]滤波器设计...

本帖最后由 wdhd 于 2016-9-1 13:50 编辑

  请问为什么afd_butt函数运行不出来,会提示??? Undefined command/function 'afd_butt'.这个??还有freqz_m.请帮帮忙!谢谢!

fxdq 发表于 2006-5-11 13:55

请问(ssdr)

本帖最后由 wdhd 于 2016-9-1 13:50 编辑

  请问,知不知道为什么在7.0版本下,afd_butt,freqz_m 等函数都运行不出来?

  提示??? Undefined command/function 'afd_butt'.

  请帮帮忙,急需帮助!
页: [1]
查看完整版本: [讨论]滤波器设计