网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计下载 > 电气工程与自动化类别 > 正文

FFT的c语言定点程序设计

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

网学网为广大网友收集整理了,FFT的 c语言定点程序设计,希望对大家有所帮助!

QQ交谈客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn

 

3.2转换中的关键步骤
在定点数中通过设定小数点在16位数中的不同的位置,就可以表示不同大小和不同精度的小数了。数的定标有Q表示法和S表示法。同样一个16位数,若小数点设定的位置不同,它所表示的数也就也就不同。例如:十六进制数2000H=8192,用Q0表示,十六进制数2000H=0.25 ,用Q15表示。不同的Q所表示的数不仅范围不同,而且精度也不相同。Q越大,数值范围越小,但精度越高;相反,Q越小,数值范围越大,但精度就越低。例如,Q0的数值范围是-32768到32767,其精度是1,而Q15的数值范围从-1到0.9999695,精度为1/32768=0.00003051。因此对于定点数来说,数值范围和精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;要想提高精度,则表示数的范围就相应的要减小。在实际的运算中一定要考虑到这点以达到最佳的性能。
浮点数与定点数的转换关系可表示为
浮点数(x)转换为定点数():
定点数()转换为浮点数(x):
为了最大限度地保持数的精度,在将浮点转换成定点数时,可以采取上取整的方法,在取整运算前,先加上0.5,即浮点数(x)为定点数():
在转换当中,控制了输入的情况下,加法不会产生溢出,关键在于乘法的移位处理。
设浮点乘法的运算的表达式:
float x,y,z;
z=xy;
假设经过统计后x 的定标值为Qx,y的定标值为Qy,乘积z的定标值为Qz,则
所以定点表示的乘法为:
int x,y,z;
long temp;
temp=(long)x;
z=(temp*y)>>(Qx+Qy-Qz);
3.3误差分析
 将定点程序在turboc 环境下运行,得到的结果如下:
7369 0   -821   1978   -819 820   -821 340   -819 0 -819 -340 
-819 -820   -819 -1978
再跟上面浮点一样,在matlab中调用fft函数,函数中的输入即为上述输入的浮点数的定点形式,具体matlab程序如下:
%MATLAB PROGRAM
N=8;
n=0:N-1;
xn=[204 409 614 819 1024 1228 1433 1638]'';
Xk=fft(xn)
运行得到的结果如下:
Xk =
 
 1.0e+003 *
 
   7.3690         
 -0.8200 + 1.9772i
 -0.8190 + 0.8200i
 -0.8200 + 0.3392i
 -0.8190         
 -0.8200 - 0.3392i
 -0.8190 - 0.8200i
 -0.8200 - 1.9772i
这是用科学记数方式表示的。对比两组结果,我们不难发现这种将浮点形式转换为定点形式的方法是可行的。具体误差分析如下:
我们在两组结果中任取4个相对应的数进行分析,如取了如下4组:7369和7369.0,-819和-819.0,-340和-339.2,-1978和-1977.2。对这4组进行误差分析,第1、2组的误差是0.0%,第3组为(340-339.2)/340=0.235%,第4组为(1978-1977.2)/1978=0.044%。由分析可知,这种变换的误差是非常小的。但误差的大小具体由表示定点数的位数决定。在这里我们是 用16位来表示的。当需要的误差还要小,你可以用更多的位数来表示,这样精度就越高,误差也越小。
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT

本文选自计算机毕业设计http://myeducs.cn
论文文章部分只是部分简介,如需了解更多详情请咨询本站客服!QQ交谈QQ3710167

设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师