数字信号处理实验FFT变换_第1页
数字信号处理实验FFT变换_第2页
数字信号处理实验FFT变换_第3页
数字信号处理实验FFT变换_第4页
数字信号处理实验FFT变换_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字信号处理实验报告姓名:胡剑烽学 号:1121302231学 院:计算机工程学院专 业:通信工程题 目:FFT变换及其应用2014年11月一 实验目的1. 在理论课学习的基础上,通过本次实验,加深对 DFT 原理的理解,懂得频域DFT与时域卷积的关系,进一步加深对DFT 基本性质的理解;2. 研究 FFT 算法的主要途径和编程思路,掌握FFT 算法及其程序的编写过程,掌握最基本的时域基-2FFT 算法原理及程序框图;3. 熟悉应用 FFT 实现两个序列的线性卷积的方法,利用FFT 进行卷积,通过实验比较出快速卷积优越性,掌握循环卷积和线性卷积两者之间的关系;4. 熟悉应用 FFT 对典型信号

2、进行频谱分析的方法,初步了解用周期图法作随机信号谱分析的方法,了解应用FFT 进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT;5. 掌握使用 MATLAB 等基本开发工具实现对FFT 编程。二 实验设备1. Windows 2000 以上操作系统;2. Visual C+6.0/ Visual Basic6.0/Delphi6.0/MatLab6.5 等以上版本的开发环境;3. 每人一台 PC 机。三 实验原理(一)离散傅里叶变换(DFT)有限长序列的离散傅里叶变换的定义为:x(n)和 X (k)是一个有限长序列的离散傅里叶变换对,分别称为 DFT、IDFT。已知其中的一个,

3、就能惟一地确定另一个。X (k)也可以看作序列x(n)的傅里叶变换 X (e j ) 在区间0, 2上的N 点等间隔采样,其采样间隔为2 / N = N ,这就是 DFT 的物理意义。DFT 具有以下一些性质:线性、圆周移位、圆周卷积、有限长序列的线性卷积与圆周卷积及共轭对称性等。(二)快速傅里叶变换(FFT)由于 DFT 运算过程复杂及耗时较大,诞生了FFT。这里仅讨论按时间抽取的基-2 FFT设序列x(n)长度为 N,且满足N = 2M ,M 为正整数。按n的奇偶把x(n)分解为两个N/2 点的子序列:则x(n)的 DFT 转化为:其中,可见,一个N 点DFT 分解成两个N/2 点的DFT

4、。但由于1X (k)、 2X (k)只有 N/2 个点,而 X (k)却有 N个点,故计算得到的只是 X (k)的前一半的结果,要用1X (k)、 2X (k)来表达全部的 X (k)值,还必须应用系数的周期性即有:因此得:(三)用FFT 进行谱分析由上面的分析可知,若信号本身是有限长的序列,计算序列的频谱就是直接对序列进行FFT 运算求得 X (k), X (k)就代表了序列在0,2 之间的频谱值。 幅度谱: 相位谱:若信号是模拟信号,用FFT 进行谱分析时,首先必须对信号进行采样,使之变成离散信号,然后就可按照前面的方法用FFT 来对连续信号进行谱分析。按采样定理,采样频率s f应大于2

5、倍信号的最高频率,为了满足采样定理,一般在采样之前要设置一个抗混叠低通滤波器。用FFT 对模拟信号进行谱分析的方框图如下所示。在运用FFT 进行频谱分析的时候可能有混淆现象、泄漏现象和栅栏效应。(五)FFT 求解函数MATLAB 提供了求解FFT 的函数。参见下表。四 实验内容(一)用 FFT 进行谱分析1高斯序列:n=0:15;p=8;q=2;x =exp(-1*(n-p).2/q);close all;subplot(3,1,1);stem(fft(x) ; %利用fft 函数实现傅里叶变换subplot(3,1,2);stem(abs(fft(x); %绘制幅度谱subplot(3,1,

6、3);stem(angle(fft(x) %绘制相位谱结果如下图所示:P=8,q=2P=8,q=4P=8,q=8q=8,p=13q=8,p=14从上面的图中,根据p和q值相应的变化,可以看出:固定p=8,改变q的值:随着q的增大,经过傅里叶变化后的图像显示值的变化比较缓慢,幅度谱变化随着q的变大而变大,但相位的变化较不同。当固定q=8,随着p的增大,时域信号幅值变换的比较缓慢。2正弦序列n=0:15; %定义序列长度a=0.1;f=0.0625;x=exp(-a*n).*sin(2*pi*f*n);close all;subplot(2,1,1);stem(x);title(衰减正弦序列);s

7、ubplot(2,1,2);stem(abs(fft(x); %绘制幅度谱title(x 信号的频谱)结果如下图所示:a=0.1、f=0.0625a=0.1、f=0.4375A=0.1,f=0.5625问题:A.令a=0.1,f=0.625,检查谱峰出现的位置是否正确,注意频谱的形式,绘制频谱特性曲线。B.取f=0.4375 f=0.5625,观察在这两种情况下频谱的形状和普峰出现的位置,有无混淆和泄漏现象发生?说明产生现象的发生答案:A谱峰出现的位置是正确的。B有混淆和泄漏。因为所选采样频率不满足采样定理。3三角序列for i=1:4x(i)=i;endfor i=5:8x(i)=9-i;e

8、ndclose allsubplot(2,1,1);stem(x);subplot(2,1,2);stem(abs(fft(x) %绘制幅度谱结果如下图所示:(二)使用FFT 实现卷积运算已知三个序列:使用 FFT,实现x1(n) x2 (n); 1 3 x (n) x (n); 3 2 x (n) x (n)。(三)一个综合性例子1创建简易界面使用 MATLAB 中的图形用户接口功能,设计简单的操作界面,如图4.6 所示。在列表中,包含正弦波、方波、三角波和锯齿波。可以使用滑动块调节参数。代码如下:function fig = DFTMain()load DFTMainh0 = figure

9、(Color,0.8 0.8 0.8, .Colormap,mat0, .HandleVisibility,off, .Name,DFT GUI, .NumberTitle,off, .PointerShapeCData,mat1, .Position,28 98 342 112, .Resize,off, .Tag,Fig1);h1 = uicontrol(Parent,h0, .Units,points, .Callback,eval (set_sig);, .ListboxTop,0, .Position,17.25 21 67.5 15.75, .String,mat2, .Style

10、,popupmenu, .Tag,Pop_name, .Value,1);h1 = uicontrol(Parent,h0, .Units,points, .BackgroundColor,0.752941176470588 0.7529411764705880.752941176470588, .ListboxTop,0, .Position,101.25 36.75 54.75 12, .String,周期数, .Style,text, .Tag,StaticText1);h1 = uicontrol(Parent,h0, .Units,points, .BackgroundColor,0

11、.752941176470588 0.7529411764705880.752941176470588, .FontSize,14, .ListboxTop,0, .Position,14.25 54 231 16.5, .String,离散傅里叶变换, .Style,text, .Tag,StaticText2);h1 = uicontrol(Parent,h0, .Units,points, .Callback,exit;, .ListboxTop,0, .Position,192.75 24.75 55.5 12, .String,退出, .Tag,Pushbutton1);h1 = u

12、icontrol(Parent,h0, .Units,points, .BackgroundColor,0.752941176470588 0.7529411764705880.752941176470588, .Callback,eval(set_sig);, .ListboxTop,0, .Max,20, .Min,1, .Position,93.75 15.75 69.75 12, .SliderStep,0.05 1, .Style,slider, .Tag,Slider_cycle, .Value,2.9);h1 = uicontrol(Parent,h0, .Units,point

13、s, .BackgroundColor,1 1 1, .ListboxTop,0, .Position,169.5 13.5 18 15, .String,2, .Style,text, .Tag,Static_cycle);if nargout 0, fig = h0; end这里,通过选择列表框的选项或拖动滑动块,调用函数set_sig,用于更改参数设置。2编写set_sig 函数代码set_sig 函数的代码如下:function set_signames_hndl = findobj (gcbf , Tag , Pop_name);cyc_hndl = findobj(gcbf , T

14、ag , Slider_cycle);static_hndl = findobj(gcbf , Tag , Static_cycle);%确定周期数cycles = floor(get (cyc_hndl,Value);set(static_hndl ,String , num2str(cycles);if ( isempty (cycles) | (cycles 0);return;end;%设置序列长度N1 = 16; %length of one cycleN = N1 * cycles;%设置时间time = linspace (0,1,N+1);%设置类型names = get (

15、names_hndl ,String);val = get (names_hndl , Value);sig_type = namesval;switch (sig_type)case(正弦波),sig = sin (2*pi*cycles*time);case (方波),sig = square (2*pi*cycles*time);case (三角波),sig = sawtooth(2*pi*cycles*time,0.5);case (锯齿波),sig = sawtooth (2*pi*cycles*time);end;sig(end) = ;show_plots(sig);其中,调用了show_plots 函数,以显示结果。3编写show_plots 函数代码show_plots 函数的代码如下:function show_plots(sig)figure(2);U = length(sig);L = 5*U;time_ind = linspace (0, U-1, U);time_index_1 = linspace (0,U- U/U ,U);time_index_2 = linspace (0,U - U/L ,L);F = fft(sig);F1 = fft (sig

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论