nxy825715 发表于 2007-3-19 15:05

请教FIR滤波器设计

现在我已经设计好了一个带通滤波器,也得到了滤波器系数,<br />请问:怎样将滤波器系数从MATLAB中导出来???<br /><br />由于MATLAB中的系数是浮点型的,但我想要的是定点型的.<br />请问:怎么样设置(操作)才能将浮点型的系数转换成定点型系数??<br /><br />先谢了...<br />

小研究 发表于 2007-3-20 08:54

滤波器的系数通常并不多

滤波器的系数通常并不多,即使手写也很快的,你可以在主窗口中显示然后复制过来。<br />至于定点化也很简单,我用的方法是乘以32768,然后四舍五入,再除以32768即可。

nxy825715 发表于 2007-3-20 09:07

Re:

请问小研究:<br />&nbsp;&nbsp;&nbsp;&nbsp;乘以32768&nbsp;:&nbsp;是滤波器系数乘以32768吗?<br />&nbsp;&nbsp;&nbsp;&nbsp;除以32768&nbsp;:&nbsp;是滤波器的输出除以32768吗?<br /><br />还望请回复.<br />先谢谢了...

小研究 发表于 2007-3-20 09:27

我说的是16位定点DSP

你仿真得到的系数,乘以32768后四舍五入,之后的结果再乘以32768。

小研究 发表于 2007-3-20 11:09

这可是我自创的办法,楼主将来要请客啊,哈哈

nxy825715 发表于 2007-3-21 10:07

我已经搞定了

但还是要谢谢&quot;小研究&quot;,有机会一定请你!<br /><br />如果使用软件设计的方法,那么可能需要你的那种方法.<br /><br />现在我使用FDATOOL设计,然后将系数导出为&nbsp;有符号的16位定点数据.

nxy825715 发表于 2007-3-21 13:52

Re:

请问&quot;小研究&quot;:<br />&nbsp;&nbsp;&nbsp;&nbsp;你使用过C54xx系列的DSPLIB中的FIR函数吗?<br />&nbsp;&nbsp;&nbsp;&nbsp;我在MATLAB中设计的低通滤波器(经过了Smulink的仿真),但在C5402的开发中这个滤波器达不到滤波效果(我已经参考了DSPLIB中FIR函数的使用,我设计的低通滤波器是0&nbsp;--&nbsp;10000Hz,我输入15K&nbsp;Hz,滤波器后这个15K&nbsp;Hz的信号依然存在).<br />&nbsp;&nbsp;&nbsp;&nbsp;若你使用过,可否发一个例子给我呢,谢谢了.

nxy825715 发表于 2007-3-21 16:01

Re:

我已经调试通过了,<br />是以为滤波器发生了益出.

nxy825715 发表于 2007-3-22 10:07

Re:

&quot;小研究&quot;:我解决了滤波器益出的问题,但是还是不能达到滤波器的效果.<br /><br />先我附上我的程序,还请指点:<br /><br />/*<br />*********************************************************************<br />**函数原型:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;FirLowPassPrg(short&nbsp;*Input,&nbsp;short&nbsp;*Coefs,&nbsp;short&nbsp;*Output)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />**参数说明:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Input&nbsp;:&nbsp;输入数据<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Coefs&nbsp;:滤波器系数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Output:滤波输出数据<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBUFLEN:&nbsp;128<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LpfCoefsLen:&nbsp;滤波器系数个数&nbsp;51<br />**返回值:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无<br />**说明:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Low&nbsp;pass&nbsp;filter&nbsp;(0&nbsp;--&nbsp;10K&nbsp;Hz)<br />*********************************************************************<br />*/<br />void&nbsp;FirLowPassPrg(short&nbsp;*Input,&nbsp;short&nbsp;*Coefs,&nbsp;short&nbsp;*Output)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;ushort&nbsp;i,&nbsp;n;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;由于直接进行1024个点的FIR滤波,则导致溢出<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;所以将1024个点的FIR滤波分解成128次的8个点的滤波<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(n&nbsp;=&nbsp;0;&nbsp;n&nbsp;&lt&nbsp;128;&nbsp;n++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt&nbsp;DBUFLEN;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Clear&nbsp;Delay&nbsp;buffer&nbsp;(must)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DbBuffer&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbptr&nbsp;=&nbsp;&DbBuffer;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fir(&Input,&nbsp;Coefs,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&Output,&nbsp;&dbptr,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LpfCoefsLen,&nbsp;(NX&nbsp;/&nbsp;128));<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;将滤波后的数据再次存放到Input[]中<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt&nbsp;NX;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Input&nbsp;=&nbsp;Output;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />

雪梅y 发表于 2007-3-24 09:23

请教关于用DSP设计低通数字滤波器

请问截止频率为2KHZ,它的通带频率最好为多少<br />其他参数设置为多少<br />还有用什么窗函数简单点<br />

nxy825715 发表于 2007-3-24 17:23

个人见解:

它的通带频率最好为多少:<br />答:这个要根据你的系统来确定.滤波器级数越高,则通带越窄.<br />其他参数设置为多少:<br />答:仔细看看FIR或者IIR的讲解.审查你的系统需要滤波器达到怎么样的精度.<br />还有用什么窗函数简单点:<br />答:不同的窗函数会导致不同的通带纹波幅度,及最小衰减幅度.<br /><br />

雪梅y 发表于 2007-3-25 09:10

请教

谢谢<br />那请问用汉宁窗设计一个音频低通FIR<br />它的截止频率为2KHZ那其他参数怎么设置呢<br />谢谢<br />

小研究 发表于 2007-3-27 14:32

回nxy825715

我是搞ADSP-21XX的,TI的54系列只看过,没用过,你提供的程序倒是可以看看。

小研究 发表于 2007-3-27 14:52

回雪梅y

其实nxy825715说的差不多,关键是看你的技术指标。比如你的截止频率是2K,那么你用B=fir1(N,W)时,你的N值越大,实际得到的W越接近于2K,而且带阻部分衰减越快。<br />这些日子在忙着找工作,好久没来了。

nxy825715 发表于 2007-3-27 16:04

Re:

nxy825715 发表于 2007-3-27 16:07

Re:

不管怎么样,还是要多谢&quot;小研究&quot;的热心回答...<br /><br />请问,谁使用过C54x&nbsp;的DSPLIB库中的FIR函数呀,<br />我现在就是使用这个函数进行滤波的,但是出先了问题,<br />如果谁使用过,还请麻烦阁下发一份,给在下点提示...<br /><br />先谢谢了...

小研究 发表于 2007-3-27 20:43

回nxy825715

你居然用了1024个点,什么滤波居然用这么高的阶数?<br />能否把你的系数发来,我给你仿真一下,看是否可以仿真通过?

nxy825715 发表于 2007-3-28 08:33

Re:

回小研究:<br />&nbsp;&nbsp;&nbsp;&nbsp;我的系数是51个,采样的数据是1024个.

12326 发表于 2019-3-18 23:41

小研究 发表于 2007-3-27 14:32
我是搞ADSP-21XX的,TI的54系列只看过,没用过,你提供的程序倒是可以看看。...

我这边毕业设计也是要用MATLAB仿真,然后窗函数法和频率采样法设计FIR带通滤波器,大佬们能帮个忙吗

小研究 发表于 2019-3-24 22:29

12326 发表于 2019-3-18 23:41
我这边毕业设计也是要用MATLAB仿真,然后窗函数法和频率采样法设计FIR带通滤波器,大佬们能帮个忙吗 ...

这么久远的帖子也被你扒出来了。
找本MATLAB的书看看,到处都是你要的东西,这种教材太多了。
页: [1]
查看完整版本: 请教FIR滤波器设计