eric2013 发表于 2014-12-7 13:51:17

Q值的选取和动态Q值

http://blog.csdn.net/mobileaudio/article/details/5836017

eric2013 发表于 2014-12-7 14:02:23

对定点计算与浮点计算有了新的认识
http://blog.163.com/feiyanke@126/blog/static/122372513201122432054624/

eric2013 发表于 2014-12-7 15:44:11

eric2013:
对定点计算与浮点计算有了新的认识
http://blog.163.com/feiyanke@126/blog/static/122372513201122432054624/ images/back.gif


程序变量的Q值确定
    在前面几节介绍的例子中,由于x,y,z的值都是已知的,因此从浮点变为定点时Q值很好确定。在实际的DSP应用中,程序中参与运算的都是变量,那么如何确定浮点程序中变量的Q值呢?从前面的分析可以知道,确定变量的Q值实际上就是确定变量的动态范围,动态范围确定了,则Q值也就确定了。
设变量的绝对值的最大值为|max|,注意|max|必须小于或等于32767。取一个整数n,使满足
2n-1<|max|<2n
则有
2-Q=2-15*2n=2-(15-n)
Q=15-n
例如,某变量的值在-1至+1之间,即|max|<1,因此n=0,Q=15-n=15。
    既然确定了变量的|max|就可以确定其Q值,那么变量的|max|又是如何确定的呢?一般来说,确定变量的|max|有两种方法。一种是理论分析法,另一种是统计分析法。
1. 理论分析法
    有些变量的动态范围通过理论分析是可以确定的。例如:
(1)三角函数。y=sin(x)或y=cos(x),由三角函数知识可知,|y|<=1。
(2)汉明窗。y(n)=0.54一0.46cos,0<=n<=N-1。因为-1<=cos<=1,所以0.08<=y(n)<=1.0。
(3)FIR卷积。y(n)=∑h(k)x(n-k),设∑|h(k)|=1.0,且x(n)是模拟信号12位量化值,即有|x(n)|<=211,则|y(n)|<=211。
(4)理论已经证明,在自相关线性预测编码(LPC)的程序设计中,反射系数ki满足下列不等式:|ki|<1.0,i=1,2,...,p,p为LPC的阶数。
2. 统计分析法
    对于理论上无法确定范围的变量,一般采用统计分析的方法来确定其动态范围。所谓统计分析,就是用足够多的输入信号样值来确定程序中变量的动态范围,这里输入信号一方面要有一定的数量,另一方面必须尽可能地涉及各种情况。例如,在语音信号分析中,统计分析时就必须来集足够多的语音信号样值,并且在所采集的语音样值中,应尽可能地包含各种情况。如音量的大小,声音的种类(男声、女声等)。只有这样,统计出来的结果才能具有典型性。
    当然,统计分析毕竟不可能涉及所有可能发生的情况,因此,对统计得出的结果在程序设计时可采取一些保护措施,如适当牺牲一些精度,Q值取比统计值稍大些,使用DSP芯片提供的溢出保护功能等

eric2013 发表于 2014-12-9 18:27:16

定点数本质是小数,但是表现形式是整数呈现的。
页: [1]
查看完整版本: Q值的选取和动态Q值