分类: LINUX
2010-07-10 21:31:24
简单的说,各种运算的原则就是先把待运算的数据放大一定的倍数,在 运算的过程中使用的放大的数据,在最终需要输出结果的时候再调整回去。
--------------------------------------------------------
声明:
此文为原创,欢
迎转载,转载请保留如下信息
作者:afreez 北京-中关村
联系方式:
(欢迎与作者交流)
初次发布时间:
初次发布在: http://blog.csdn.net/ganxingming/
不经本人同意,不得用语商业或赢利性质目的,否则,作者有权追究
相关责任!
---------------------------------------------------------
举个例来说,有如下运算:
…
// coefs1 = 0.023423; coefs2=0.2131
float coefs1,coefs2;
int result;
…
result = 34* coefs1+72* coefs2;
…
代码的意思是,该模块需要输出一个整型的结果,但计算的过程中有浮 点的运算。如果在定点的DSP中,这段代码是无法运行的。
为了解决这个问题,我们可以这样处理:首先,把coefs1,coefs2等类似的浮点数据扩大 一定的倍数(具体扩大多少倍,依据精度要求不同),我们暂且把小数点向右移动4位,也 就是扩大的倍数为:*10000,在最终的输出的时候在缩小相同的倍数。修改后的代码大致如下:
// coefs1 = 234; coefs2= 2131
int coefs1,coefs2;
int result;
…
result = 34* coefs1+72* coefs2;
result /= 10000;
…
当然,上面的例子为了大家好理解,写的可能不是 太正确,不过基本的精髓应该是这些了。具体的处理过程,大家可以在网上搜索“第3章 DSP芯片的定点运算.doc”这篇文章,写的很具体,这里不再罗嗦了。--------------------------------------------------------
声明:
此文为原创,欢
迎转载,转载请保留如下信息
作者:afreez 北京-中关村
联系方式:
(欢迎与作者交流)
初次发布时间:
初次发布在: http://blog.csdn.net/ganxingming/
不经本人同意,不得用语商业或赢利性质目的,否则,作者有权追究
相关责任!
---------------------------------------------------------