打印

DSP浮点转定点运算问题

[复制链接]
2679|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pdm97|  楼主 | 2008-4-17 10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//在DSP算法设计中常需要把浮点运算转化成定点运算,为什么在下面的代码中fresult和sresult的的运算结果不等
//请高手指教,谢谢!!!!!

void fixPiontTest(short *in_data,int n )
{
   int i;
   float fw1,fw2,fw3,fw0,fw;
   short sw0,sw1,sw2;   
   short fresult,sresult;
   short w[4];
   short fwf[4];   
   short x;

   

   fw0=5625636.482914;
   fw1=16796184.027028;
   fw2=-16716106.802805;
   fw3=5545557.1237500 ;
   fw=1.0-((fw1+fw2+fw3)/fw0); 
   
 //  fsw0=2.985650;
 //  fsw1=-2.971416;
 //  fsw2=0.985765;
   
   sw0 =(short) ( fw1/fw0 * 8192  ); //Q13
   sw1 =(short) ( fw2/fw0 * 8192 );  //Q13
   sw2 = (short)( fw3/fw0 * 8192  ); //Q13
   w[0]=w[1]=w[2]=in_data[0];
   fwf[0]=fwf[1]=fwf[2]=in_data[0];
   for(i=0;i<n;i++)
   {
      x=in_data;
      fresult=(short)(x*fw+(fw1*fwf[2]+fw2*fwf[1]+fw3*fwf[0])/fw0);
      fwf[0]=fwf[1];
      fwf[1]=fwf[2];
      fwf[2]=fresult;
      sresult=(short)(x + 
            ((sw0*(w[2]-x)+sw1*(w[1]-x)+sw2*(w[0]-x))  >>13) );
      w[0]=w[1];
      w[1]=w[2];
      w[2]=sresult;
      if(fresult!=sresult)    printf("f %d,s %d ",fresult,sresult);
   }
}

相关帖子

沙发
pdm97|  楼主 | 2008-4-21 21:34 | 只看该作者

一个极其怪的问题!

   fw0=5625636.482914;
   fw1=16796184.027028;
   fw2=-16716106.802805;
   fw3=5545557.1237500 ;
   fw=1.0-((fw1+fw2+fw3)/fw0);     
   sw0 =(short) ( fw1/fw0 * 8192  ); //Q13
   sw1 =(short) ( fw2/fw0 * 8192 );  //Q13
   sw2 = (short)( fw3/fw0 * 8192  ); //Q13
   w[0]=w[1]=w[2]=in_data[0];
   fwf[0]=fwf[1]=fwf[2]=in_data[0];

for(i=0;i<n;i++)
   {
      x=in_data;

 (1)     sresult=(short)(x + 
            ((sw0*(w[2]-x)+sw1*(w[1]-x)+sw2*(w[0]-x))  >>13) );
      ////////////////////////////////////////////////////////
 (2)    sresult=(short)(x + 
            ((sw0*(w[2]-x)+sw1*(w[1]-x)+sw2*(w[0]-x))/8192) );
      ////////////////////////////////////////////////////////
      w[0]=w[1];
      w[1]=w[2];
      w[2]=sresult;
      if(fresult!=sresult)    printf("f %d,s %d ",fresult,sresult);
   }
为什么语句(1),(2)执行出来的结果不一样,请高手指点,问题在什么地方!

使用特权

评论回复
板凳
snakeemail| | 2008-4-22 08:40 | 只看该作者

这种问题自己查,一步一步debug就行了

使用特权

评论回复
地板
pdm97|  楼主 | 2008-4-23 10:46 | 只看该作者

一个极其怪的问题!

我已经DEBUG了,
出现的问题就是在那两个不同的语句中,但是这两条语句的功能完全相同,仅仅一个是DSP浮点运算,另外一个是转为定点运算!但是定点运算出来的结果不对,是我浮点转定点运算的定Q值定标没有对吗?请高手指教!一个项目上遇到的问题!急

使用特权

评论回复
5
pdm97|  楼主 | 2008-4-27 10:19 | 只看该作者

一个极其怪的问题!

怎么没有人帮忙看看呢!

使用特权

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

本版积分规则

4

主题

17

帖子

0

粉丝