DSP设计一个IIR滤波器得到的结果有动态衰减
我先用Matlab仿真了一个中心频率1000Hz的IIR巴特沃斯带通滤波器,然后将系数移植到了DSP中,得到的对1000Hz的滤波结果如附件所示。其中截取了两张时域滤波结果,发现有动态的衰减,而频域是正确的。想请问为什么会出现这种情况?这样正常吗?DSP中要不要考虑Matlab得到的衰减系数呢?我在DSP调用的是DSPF_sp_biquad函数。知道者请帮忙解答一下,谢谢~不明白你所说的动态衰减是什么意思?
时域的信号幅度有变化是正常的,某个时刻的采样值是各个频率成分的叠加,你加上滤波器之后滤掉一些频率成分,那累加的结果有变化当然正常.
MATLAB得到的衰减系数要考虑,因为那是滤波器系数的一部分. 我输入的就是一个1000Hz的正弦波,可是通过滤波器应该和输入信号一样啊,可是输出的幅度是不规则变化的,即使没考虑滤波器的衰减系数,得到的幅度衰减应该也是一样的吧? 如果是单一频率,那应该时域的幅度就是是平的,不至于忽高忽低,即使有,也应该很细微的. 会不会滤波器没用对? 还有一个就是衰减没加,导致差别被放大,比如10和10000,但如果都除以10^6,变化就不是很明显. 有道理,我试试,谢谢了! 好 我加了衰减之后好像也不对,它只是将所有数据都缩小了一定倍数,幅度之间差别还是挺大的。可是我在Matlab上仿真的时候就不会,这是怎么回事呢?应该不是滤波器设计的问题吧?我移植到DSP中的滤波器系数是采用级联实现的,Matlab仿真上是直接实现的,跟这个有关系吗?还是说Matlab和DSP中调用的算法程序有差别? 5# aresc 很有可能是函数DSPF_sp_biquad用的不对,从网上查了一下,nx必须是3的倍数,还有要求在调用前关闭中断,调用结束后打开中断等,貌似这个库函数在莫个版本之前有BUG.
http://e2e.ti.com/support/dsp/tms320c6000_high_performance_dsps/f/115/p/12368/48354.aspx
http://e2e.ti.com/support/dsp/tms320c6000_high_performance_dsps/f/115/t/12424.aspx 恩~十分感谢你!原来DSPF_sp_biquad函数调用还有那么多要求。只是我后来我试验发现也许不是滤波器函数调用的问题,我采集的原始数据是存放在一个1024数组里,然后对其奇数和偶数项分别进行同样的IIR滤波,但是结果发现基数项中的数据(正弦波)和滤波结果是正确的,可偶数项中数据都是些混频的杂乱信号,所以偶数项中的结果就是些带有衰减的正弦波了,现在正在查找造成这种现象的原因。 9# aresc
页:
[1]