“快速傅里叶变换的实现”实验报告.pdf

“快速傅里叶变换的实现”实验报告.pdf

ID:57072160

大小:752.25 KB

页数:16页

时间:2020-08-01

“快速傅里叶变换的实现”实验报告.pdf_第1页
“快速傅里叶变换的实现”实验报告.pdf_第2页
“快速傅里叶变换的实现”实验报告.pdf_第3页
“快速傅里叶变换的实现”实验报告.pdf_第4页
“快速傅里叶变换的实现”实验报告.pdf_第5页
资源描述:

《“快速傅里叶变换的实现”实验报告.pdf》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、广东工业大学《数字图像、数字信号处理及应用》实验报告题目快速傅里叶变换的实现院、系(部)信息工程学院专业及班级学号姓名日期1实验目的理解快速傅里叶变换算法的原理;将FFT、IFFT算法进行基于C语言的实现;利用FFT算法估计随机过程的功率谱(周期图法)。2实验要求(1)理解FFT、IFFT算法的原理及实现细节,包括复数据和实数据时的实现区别;(2)熟悉经典功率谱估计法之一——周期图法的原理和步骤;(3)完成以下设计实现:a.编写C语言函数,完成复数据时的FFT及IFFT算法的浮点实现(按时间抽取的基2算

2、法);b.编写C语言函数,完成单个实函数时的FFT及IFFT算法的浮点实现(按时间抽取的基2算法);c.编写程序产生长度为N的一段均值为0、方差为1的实高斯白噪声序列v(n),产生长度为N的三个实正弦序列(归一化频率分别为0.1、0.25、0.27,信噪比分别为30dB、30dB、27dB),将三个实正弦序列和实高斯白噪声序列进行叠加得到观测信号uN(n);(该步骤可通过MATLAB实现后将数据以文件形式保存,N取32、64、128三种情况)d.编写C语言主函数测试程序,计算出uN(n)的功率谱,并用图

3、示显示出功率谱;(为完成图示显示,可将功率谱数据结果以文件形式保存,然后在MATLAB中导入并进行图示)e.利用MATLAB检验你所编写的FFT、IFFT函数的正确性。更多的改进方向:f.编写C语言函数,完成FFT、IFFT算法的定点实现。3实验设备安装了VC、MATLAB软件的PC机4实验原理①如何在matlab上实现与C语言的混编?由于本次实验中涉及到C语言与matlab进行数据交互的问题。如果按照实验要求给出的方案来实现的话,无疑在测试中要进行频繁的文件读写才能把数据在matlab和C语言之间传递

4、。这样,测试过程缓慢并且容易出现人为导致的错误。好在matlab为我们考虑到了这点,可以使用在matlab使用mex命令对C语言进行编译,编译完成之后,就可以直接在matlab命令行调用C语言程序了,避免了matlab与C语言交互过程带来的种种不便。准确来讲使用mex命令是把C语言编译成matlab能够识别的动态链接库(.mexw64/.mexw32)。不过使用之前,用户需要解决两个问题:11、如何定义C语言与matlab的接口函数及接口函数的参数意义;2、matlab与C语言是如何进行数据的传递的。下

5、面我们就先解决第一个问题,matlab与C语言的接口函数为:voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]);这个函数接口可以与main函数接口进行类比,只不过main函数是操作系统对于程序的接口,而mexFunction为matlab调用C语言的接口函数。Matlab与C语言的数据交互是通过mexFunction的参数进行的(mexFunction没有返回值)。其中,nhls为输出数据的个数;plhs为输出数据的指针

6、构成的数组;nrhs为输入数据的个数;prhs为输入数据的指针构成的数组。例如,使用[a,b]=test(c,d,e)调用mex函数test时,传给test的这三个参数分别是prhs[0]=c,prhs[1]=d,prhs[2]=e。当函数返回时,将会把你放在plhs[0],plhs[1]里的地址赋给a和b,达到返回数据的目的。第二个问题:matlab与C语言是如何进行数据的传递的。Matlab传进C语言的数据是以数组的形式存在的。对于实数,可以利用mxGetPr()函数得到matlab输入数据的指针。

7、如果想输出double数据到matlab,可以使用mxCreateDoubleMatric()函数来创建一个double的矩阵。具体的输入输出函数可以通过在matlab键入”helpmex”得到。②什么是DFT?和FFT的由来。DFT是离散傅里叶变换的英文缩写,是傅里叶变换在时域和频域上都呈离散的形式,将信号的时域采样变换为其DTFT的频域采样。在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。即使对有限长的离散信号作DFT,也应当将其看作其周期

8、延拓的变换。在200多年前法国数学家、物理学家傅里叶提出后来以他名字命名的傅里叶级数之后,用DFT这个工具来分析信号就已经为人们所知。但在很长时间内,这种分析方法并没有引起更多的重视,最主要的原因在于这种方法运算量比较大。FFT(快速傅里叶变换)是1965年由库利和图基共同提出的一种快速计算DFT的方法。这种方法充分利用了DFT运算中的对称性和周期性,从而将DFT运算量从N2减少到N*log2N。当N比较小时,FFT优势并不明显。但当N大于

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。