DSP设计一个IIR滤波器得到的结果有动态衰减

[复制链接]
3617|9
 楼主| nanguamache 发表于 2011-4-4 10:22 | 显示全部楼层 |阅读模式
我先用Matlab仿真了一个中心频率1000Hz的IIR巴特沃斯带通滤波器,然后将系数移植到了DSP中,得到的对1000Hz的滤波结果如附件所示。其中截取了两张时域滤波结果,发现有动态的衰减,而频域是正确的。想请问为什么会出现这种情况?这样正常吗?DSP中要不要考虑Matlab得到的衰减系数呢?我在DSP调用的是DSPF_sp_biquad函数。知道者请帮忙解答一下,谢谢~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
aresc 发表于 2011-4-4 11:56 | 显示全部楼层
不明白你所说的动态衰减是什么意思?

时域的信号幅度有变化是正常的,某个时刻的采样值是各个频率成分的叠加,你加上滤波器之后滤掉一些频率成分,那累加的结果有变化当然正常.

MATLAB得到的衰减系数要考虑,因为那是滤波器系数的一部分.
 楼主| nanguamache 发表于 2011-4-4 20:33 | 显示全部楼层
我输入的就是一个1000Hz的正弦波,可是通过滤波器应该和输入信号一样啊,可是输出的幅度是不规则变化的,即使没考虑滤波器的衰减系数,得到的幅度衰减应该也是一样的吧?
aresc 发表于 2011-4-4 21:02 | 显示全部楼层
如果是单一频率,那应该时域的幅度就是是平的,不至于忽高忽低,即使有,也应该很细微的. 会不会滤波器没用对?
aresc 发表于 2011-4-4 21:32 | 显示全部楼层
还有一个就是衰减没加,导致差别被放大,比如10和10000,但如果都除以10^6,变化就不是很明显.
 楼主| nanguamache 发表于 2011-4-4 21:46 | 显示全部楼层
有道理,我试试,谢谢了!
kmlgwyl 发表于 2011-4-4 22:34 | 显示全部楼层
 楼主| nanguamache 发表于 2011-4-9 09:38 | 显示全部楼层
我加了衰减之后好像也不对,它只是将所有数据都缩小了一定倍数,幅度之间差别还是挺大的。可是我在Matlab上仿真的时候就不会,这是怎么回事呢?应该不是滤波器设计的问题吧?我移植到DSP中的滤波器系数是采用级联实现的,Matlab仿真上是直接实现的,跟这个有关系吗?还是说Matlab和DSP中调用的算法程序有差别? 5# aresc
aresc 发表于 2011-4-11 22:40 | 显示全部楼层
很有可能是函数DSPF_sp_biquad用的不对,从网上查了一下,nx必须是3的倍数,还有要求在调用前关闭中断,调用结束后打开中断等,貌似这个库函数在莫个版本之前有BUG.

http://e2e.ti.com/support/dsp/tm ... /p/12368/48354.aspx

http://e2e.ti.com/support/dsp/tm ... /f/115/t/12424.aspx
 楼主| nanguamache 发表于 2011-4-13 10:17 | 显示全部楼层
恩~十分感谢你!原来DSPF_sp_biquad函数调用还有那么多要求。只是我后来我试验发现也许不是滤波器函数调用的问题,我采集的原始数据是存放在一个1024数组里,然后对其奇数和偶数项分别进行同样的IIR滤波,但是结果发现基数项中的数据(正弦波)和滤波结果是正确的,可偶数项中数据都是些混频的杂乱信号,所以偶数项中的结果就是些带有衰减的正弦波了,现在正在查找造成这种现象的原因。 9# aresc
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

53

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部