yst422 发表于 2008-3-31 16:36

DSP程序里IIR滤波结果跟MATLAB仿真结果相差很大是为什么?

各位老兄:
               我最近利用TI库函数里IIR滤波程序对一组数据进行滤波,IIR系数利用TI公司所提供的eziir.m(matlab程序)程序获得,在matlab里利用相同的系数对相同的数据进行滤波,结果相差很大,请问有没有做过类似工作的,能够指点一二,小弟在这不胜感激.

风花雪月 发表于 2008-4-4 18:16

据个人了解TI DSP对FFT和IIR滤波函数都做了优化,不过具体就不是很了解了

yst422 发表于 2008-4-8 16:58

优化后的程序跟MATLAB处理的结果相差很大,MTALAB处理的结果在1和2之间波动,而DSP处理的结果范围在1-20之间,不知道那位做过类似的工作,望指点迷津

风花雪月 发表于 2008-4-9 08:19

原帖由 yst422 于 2008-4-8 16:58 发表 http://www.chinavib.com/forum/images/common/back.gif
优化后的程序跟MATLAB处理的结果相差很大,MTALAB处理的结果在1和2之间波动,而DSP处理的结果范围在1-20之间,不知道那位做过类似的工作,望指点迷津

这个就不清楚,除非能够知道优化方案

yst422 发表于 2008-4-9 14:16

下面是我用的IIR的系数,是通过MATLAB得到的,是通过=butter(4,)得到,
B =
1.0e-004 *
Columns 1 through 8
    0.0410         0   -0.1639         0    0.2458         0   -0.1639         0
Column 9
    0.0410

A =
Columns 1 through 8
    1.0000   -5.9315   16.9555-29.7829   34.9749-28.0324   15.0209   -4.9459
Column 9
    0.7848


然后转化成TI提供优化程序里所用的系数如下:

#define IIR_BPF_COEFFbp1 {\
   -3688,5066,30,60,30,\
   -3703,5323,231,462,231,\
   -3918,5024,551,-1101,551,\
   -3933,5649,10393,-20786,10393}
   
#define IIR_BPF_ISFbp1 244
#define IIR_BPF_NBIQbp1 4
#define IIR_BPF_QFMATbp1 12

对同一组数据进行滤波发现滤波后的结果差异很大,不知是什么原因造成的,下面是DSP滤波程序


void iirbp(float b[],float a[], float aa[],float u[],int N,unsigned int kk)
{   
    unsigned int temp_iIIR=0;
    unsigned int temp_valueIIR=0;
    int temp_iirin=0;
    int temp_iirout=0;
    temp_valueIIR=8192/(1<<kk);
    aa=aa;
   for(temp_iIIR=0;temp_iIIR<temp_valueIIR;temp_iIIR++)
    {
      x.input=(aa);
      x.calc(&x);                                                   
      INPUTB_TEMP=(x.output<<1);
                     
    }
   
   
}

yst422 发表于 2008-4-9 16:52

不好意思,有点错误,是=butter(4,)
页: [1]
查看完整版本: DSP程序里IIR滤波结果跟MATLAB仿真结果相差很大是为什么?