打印

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

[复制链接]
2813|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nanguamache|  楼主 | 2011-4-4 10:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我先用Matlab仿真了一个中心频率1000Hz的IIR巴特沃斯带通滤波器,然后将系数移植到了DSP中,得到的对1000Hz的滤波结果如附件所示。其中截取了两张时域滤波结果,发现有动态的衰减,而频域是正确的。想请问为什么会出现这种情况?这样正常吗?DSP中要不要考虑Matlab得到的衰减系数呢?我在DSP调用的是DSPF_sp_biquad函数。知道者请帮忙解答一下,谢谢~

Doc2.rar

36.28 KB

截取的两张时域滤波结果

相关帖子

沙发
aresc| | 2011-4-4 11:56 | 只看该作者
不明白你所说的动态衰减是什么意思?

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

MATLAB得到的衰减系数要考虑,因为那是滤波器系数的一部分.

使用特权

评论回复
板凳
nanguamache|  楼主 | 2011-4-4 20:33 | 只看该作者
我输入的就是一个1000Hz的正弦波,可是通过滤波器应该和输入信号一样啊,可是输出的幅度是不规则变化的,即使没考虑滤波器的衰减系数,得到的幅度衰减应该也是一样的吧?

使用特权

评论回复
地板
aresc| | 2011-4-4 21:02 | 只看该作者
如果是单一频率,那应该时域的幅度就是是平的,不至于忽高忽低,即使有,也应该很细微的. 会不会滤波器没用对?

使用特权

评论回复
5
aresc| | 2011-4-4 21:32 | 只看该作者
还有一个就是衰减没加,导致差别被放大,比如10和10000,但如果都除以10^6,变化就不是很明显.

使用特权

评论回复
6
nanguamache|  楼主 | 2011-4-4 21:46 | 只看该作者
有道理,我试试,谢谢了!

使用特权

评论回复
7
kmlgwyl| | 2011-4-4 22:34 | 只看该作者

使用特权

评论回复
8
nanguamache|  楼主 | 2011-4-9 09:38 | 只看该作者
我加了衰减之后好像也不对,它只是将所有数据都缩小了一定倍数,幅度之间差别还是挺大的。可是我在Matlab上仿真的时候就不会,这是怎么回事呢?应该不是滤波器设计的问题吧?我移植到DSP中的滤波器系数是采用级联实现的,Matlab仿真上是直接实现的,跟这个有关系吗?还是说Matlab和DSP中调用的算法程序有差别? 5# aresc

使用特权

评论回复
9
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

使用特权

评论回复
10
nanguamache|  楼主 | 2011-4-13 10:17 | 只看该作者
恩~十分感谢你!原来DSPF_sp_biquad函数调用还有那么多要求。只是我后来我试验发现也许不是滤波器函数调用的问题,我采集的原始数据是存放在一个1024数组里,然后对其奇数和偶数项分别进行同样的IIR滤波,但是结果发现基数项中的数据(正弦波)和滤波结果是正确的,可偶数项中数据都是些混频的杂乱信号,所以偶数项中的结果就是些带有衰减的正弦波了,现在正在查找造成这种现象的原因。 9# aresc

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

53

帖子

0

粉丝