文档详情

dsp实验报告5..doc

发布:2016-12-27约2.54千字共8页下载文档
文本预览下载声明
实验4.3 :快速傅立叶变换(FFT)算法 一.实验目的 1.掌握快速傅里叶变换(FFT)算法的原理。 2. 掌握在ccs中利用C语言编程实现FFT算法对信号进行频域分析。 二.实验设备 计算机,ICETEK-VC5509-A实验箱及电源。 三.实验原理 1.FFT算法的原理: 对于序列 x[n](0≤n≤N-1),其频谱为: X(k)=DFT[x(n)]=(0≤n≤N-1), 其中: 在x[n]为复数序列的情况下,完全可以直接运算N点DFT 需要(N-1)2次复数乘法和N(N-1)次复数加法。因此,对于一些相当大的N 值来说,直接计算它的DFT 所需计算量很大。 FFT(快速傅立叶变换)的基本思想为:将原来的N点序列最终分成分成两点为一组序列,并将这些序列的DFT 通过蝶形运算(见下图)组合起来得到原序列的DFT。 N点FFT 仅需次复数乘法和次复数加法。 8点FFT运算流图 2.程序流程图 四.实验内容 1.实验准备: 设置软件仿真模式,参看:第二部分、第一章、四、1。 2.打开工程:C:\ICETEK\VC5509Ae\VC5509Ae\Lab0503-FFT\FFT.pjt。 //主程序:fft.c中的主要语句: main() { int i; InitForFFT(); // FFT系数初始化 MakeWave(); // 产生输入正弦信号 for ( i=0;iSAMPLENUMBER;i++ ) { fWaveR[i]=INPUT[i]; fWaveI[i]=0.0f; w[i]=0.0f; } FFT(fWaveR,fWaveI); // 调用fft子程序计算输入信号的幅频谱,存入w数组 for ( i=0;iSAMPLENUMBER;i++ ) { DATA[i]=w[i]; //将w的数据存入输出信号数组DATA中 } while ( 1 ); //无限循环,在此加断点 } 3.下载运行该程序。 设置断点:在程序FFT.c中有注释“break point”语句上设置软件断点。 选择“Debug”菜单的“Animate”项,或按Alt+F5键运行程序。 实验要求: (1)在空格中填入注释。 (2)观察输出结果: [1]选择菜单View-Graph-Time/Frequency,分别进行如图(a)(b)所示设置。 注:Sampling Rate(Hz)设为128。 (a) (b) 显示INPUT时域图形: 更改Display Type为FFT Magnitude,显示INPUT的幅频谱: 显示FFT输出DATA的图形: [2]比较INPUT的幅频谱与DATA的波形,由此得出什么结论? DATA是功率谱 INPUT是频率谱。 实验5.1 :数字图像边缘检测与锐化 一.实验目的 1.掌握采用Sobel算子对图像进行边缘检测的DSP程序设计。 2.掌握采用拉普拉斯算子对图像进行锐化的DSP程序设计。 二.实验设备 PC机一台,操作系统为WindowsXP,Code Composer Studio 3.3软件。 三.实验原理 图像的边缘是图像最基本的特征,它是其周围灰度有变化的像素集合。经典的边缘提取方法是:利用边缘临近一阶或二阶方向导数变化检测边缘。该方法称为边缘检测局部算子法。边缘检测算子检查每个像素的邻域并对灰度变化率进行量化,也包括方向的确定。大多使用基于方向导数掩模求卷积的方法。 *Sobel边缘算子:下图(b)(c)的两个卷积核形成了sobel算子,图像中的每个点都用这两个核做卷积,一个核对垂直边缘最大,而另一个对水平边缘最大。两个卷积的最大值作为该点的输出。运算结果是一幅边缘幅度图像。 (a)原图 (b)sobel算子垂直模板(c)sobel算子水平模板 则原图f(i,j)(见(a)图)与这两个模板的卷积在3*3邻域内的表达式为: g(i,j)=max(-x1-2x2-x3+x7+2x8+x9,-x1+x3-2x4+2x6-x7+x8) *Laplace算子:它是二阶微分算子,若采用Laplace模板对图像进行锐化,(在原图上叠加边缘)则采用下列模板: 则原图f(i,j)与该模板的卷积在3*3邻域内的表达式为: g(i,j)=(5x5-x2-x4-x6-x8) 程序流程图: 四.实验内容 1.实验准备: - 设置软件仿真模式,参看:第二部分、第一章、四、1。 2.打开工程:(程序的详细解释见备课笔记) C:\ICETEK\VC5509Ae\VC5509Ae\Lab0802-EdgeCount\
显示全部
相似文档