dsp实验报告5..doc
文本预览下载声明
实验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\
显示全部