[讨论]滤波器设计
本帖最后由 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用双精度运算,可以满足设计要求,但把它放在单片机里运算,由于我们使用的单片机只能存单精度的,所以使得滤波效果不太理想。请问有没有其他好的解决办法?
回复:(xianglove)[讨论]滤波器设计
试一下afd_butt回复:(xianglove)[讨论]滤波器设计
建议看一下《信号处理滤波器设计——基于MATLAB和Mathematica的设计方法》这本书,上面有很多实例,另外matlab设计滤波器不只是BUTTER一个命令,还有很多,比如楼上提到的,你现比较一下那种更适合你的情况 本帖最后由 wdhd 于 2016-9-1 13:50 编辑多谢楼上指点!
几个滤波器我都试过了,由于Wn太小,所以都要求A、B参数有足够的精度才行。如果提高Wn的值,等于0.3、0.4的话,A、B的精度就可以减少,同时不影响滤波器性能。
由于Keil C编译不支持双精度,所以现在的问题是要“寻找一个高精度乘法的算法”了。哪位大侠有相关的经验吗?
我改成用二阶滤波器了,系数的精度要求不高,只要有四位有效数字就可以满足了。试验了一下,已基本达到要求,当然还有测量的精度要进行研究,有问题还有向大伙请教哦~~~
回复:(warren)回复:(xianglove)[讨论]滤波器设计...
本帖最后由 wdhd 于 2016-9-1 13:50 编辑请问为什么afd_butt函数运行不出来,会提示??? Undefined command/function 'afd_butt'.这个??还有freqz_m.请帮帮忙!谢谢!
请问(ssdr)
本帖最后由 wdhd 于 2016-9-1 13:50 编辑请问,知不知道为什么在7.0版本下,afd_butt,freqz_m 等函数都运行不出来?
提示??? Undefined command/function 'afd_butt'.
请帮帮忙,急需帮助!
页:
[1]