实验二 快速傅里叶变换算法实验

合集下载

实验二的应用FFT对信号进行频谱分析

实验二的应用FFT对信号进行频谱分析

实验二的应用FFT对信号进行频谱分析引言:频谱分析是通过将连续信号转换为离散信号,根据信号在频域上的强度分布来分析信号的频谱特性。

其中,FFT(Fast Fourier Transform,快速傅里叶变换)是一种常见的频谱分析算法,可以高效地计算离散信号的傅里叶变换。

实验目的:本实验旨在使用FFT算法来对一个信号进行频谱分析,从而了解FFT 的原理和应用。

实验器材:-计算机-MATLAB软件实验步骤:1.准备信号数据:首先,需要准备一个信号数据用于进行频谱分析。

可以通过MATLAB 自带的函数生成一个简单的信号数据,例如生成一个正弦信号:```Fs=1000;%采样频率T=1/Fs;%采样时间间隔L=1000;%信号长度t=(0:L-1)*T;%时间向量S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); % 生成信号,包含50Hz和120Hz的正弦波成分```其中,Fs为采样频率,T为采样时间间隔,L为信号长度,t为时间向量,S为生成的信号数据。

2.进行FFT计算:利用MATLAB提供的fft函数,对准备好的信号数据进行FFT计算,得到信号的频谱:```Y = fft(S); % 对信号数据进行FFT计算P2 = abs(Y/L); % 取FFT结果的模值,并归一化P1=P2(1:L/2+1);%取模值前一半P1(2:end-1) = 2*P1(2:end-1); % 对非直流分量进行倍频处理f=Fs*(0:(L/2))/L;%计算对应的频率```其中,Y为FFT计算的结果,P2为对应结果的模值,并进行归一化处理,P1为P2的前一半,f为对应的频率。

3.绘制频谱图:使用MATLAB的plot函数,将频率和对应的功率谱绘制成频谱图:```plot(f,P1)title('Single-Sided Amplitude Spectrum of S(t)')xlabel('f (Hz)')ylabel(',P1(f),')```实验结果与分析:上述实验步骤通过MATLAB实现了对一个信号的频谱分析并绘制成频谱图。

快速傅里叶变换(含详细实验过程分析)

快速傅里叶变换(含详细实验过程分析)

快速傅⾥叶变换(含详细实验过程分析)[实验2] 快速傅⾥叶变换 (FFT) 实现⼀、实验⽬的1、掌握FFT 算法和卷积运算的基本原理;2、掌握⽤C 语⾔编写DSP 程序的⽅法;3、了解利⽤FFT 算法在数字信号处理中的应⽤。

⼆、实验设备 1. ⼀台装有CCS 软件的计算机; 2. DSP 实验箱的TMS320C5410主控板; 3. DSP 硬件仿真器。

三、实验原理(⼀)快速傅⾥叶变换傅⾥叶变换是⼀种将信号从时域变换到频域的变换形式,是信号处理的重要分析⼯具。

离散傅⾥叶变换(DFT )是傅⾥叶变换在离散系统中的表⽰形式。

但是DFT 的计算量⾮常⼤, FFT 就是DFT 的⼀种快速算法, FFT 将DFT 的N 2步运算减少⾄ ( N/2 )log 2N 步。

离散信号x(n)的傅⾥叶变换可以表⽰为∑=-=10][)(N N nk N W n x k X , Nj N e W /2π-=式中的W N 称为蝶形因⼦,利⽤它的对称性和周期性可以减少运算量。

⼀般⽽⾔,FFT 算法分为时间抽取(DIT )和频率抽取(DIF )两⼤类。

两者的区别是蝶形因⼦出现的位置不同,前者中蝶形因⼦出现在输⼊端,后者中出现在输出端。

本实验以时间抽取⽅法为例。

时间抽取FFT 是将N 点输⼊序列x(n) 按照偶数项和奇数项分解为偶序列和奇序列。

偶序列为:x(0), x(2), x(4),…, x(N-2);奇序列为:x(1), x(3), x(5),…, x(N-1)。

这样x(n) 的N 点DFT 可写成:()()∑++∑=-=+-=12/0)12(12/02122)(N n kn NN n nkNW n x Wn x k X考虑到W N 的性质,即2/)2//(22/)2(2][N N j N j N W e e W ===--ππ因此有:()()∑++∑=-=-=12/02/12/02/122)(N n nkN k NN n nkN W n x WWn x k X或者写成:()()12()kN X k X k W X k =+由于X 1(k) 与X 2(k) 的周期为N/2,并且利⽤W N 的对称性和周期性,即:kNNkNWW-=+2/可得:()()12(/2)kNX k N X k W X k+=-对X1(k) 与X2(k)继续以同样的⽅式分解下去,就可以使⼀个N点的DFT最终⽤⼀组2点的DFT来计算。

快速傅里叶变换(含详细实验过程分析)

快速傅里叶变换(含详细实验过程分析)

一、实验目的1、掌握FFT 算法和卷积运算的基本原理;2、掌握用C 语言编写DSP 程序的方法;3、了解利用FFT 算法在数字信号处理中的应用。

二、实验设备 1. 一台装有CCS 软件的计算机; 2. DSP 实验箱的TMS320C5410主控板; 3. DSP 硬件仿真器。

三、实验原理 (一)快速傅里叶变换傅里叶变换是一种将信号从时域变换到频域的变换形式,是信号处理的重要分析工具。

离散傅里叶变换(DFT )是傅里叶变换在离散系统中的表示形式。

但是DFT 的计算量非常大, FFT 就是DFT 的一种快速算法, FFT 将DFT 的N 2步运算减少至 ( N/2 )log 2N 步。

离散信号x(n)的傅里叶变换可以表示为∑=-=10][)(N N nk N W n x k X , Nj N e W /2π-=式中的W N 称为蝶形因子,利用它的对称性和周期性可以减少运算量。

一般而言,FFT 算法分为时间抽取(DIT )和频率抽取(DIF )两大类。

两者的区别是蝶形因子出现的位置不同,前者中蝶形因子出现在输入端,后者中出现在输出端。

本实验以时间抽取方法为例。

时间抽取FFT 是将N 点输入序列x(n) 按照偶数项和奇数项分解为偶序列和奇序列。

偶序列为:x(0), x(2), x(4),…, x(N-2);奇序列为:x(1), x(3), x(5),…, x(N-1)。

这样x(n) 的N 点DFT 可写成:()()∑++∑=-=+-=12/0)12(12/02122)(N n kn NN n nkNW n x Wn x k X考虑到W N 的性质,即2/)2//(22/)2(2][N N j N j N W e e W ===--ππ因此有:()()∑++∑=-=-=12/02/12/02/122)(N n nkN k NN n nkN W n x WWn x k X或者写成:()()12()kN X k X k W X k =+由于X 1(k) 与X 2(k) 的周期为N/2,并且利用W N 的对称性和周期性,即:k N N k N W W -=+2/可得:()()12(/2)kN X k N X k W X k +=-对X 1(k) 与X 2(k)继续以同样的方式分解下去,就可以使一个N 点的DFT 最终用一组2点的DFT 来计算。

FFT算法分析实验实验报告

FFT算法分析实验实验报告

FFT算法分析实验实验报告一、实验目的快速傅里叶变换(Fast Fourier Transform,FFT)是数字信号处理中一种非常重要的算法。

本次实验的目的在于深入理解 FFT 算法的基本原理、性能特点,并通过实际编程实现和实验数据分析,掌握 FFT 算法在频谱分析中的应用。

二、实验原理FFT 算法是离散傅里叶变换(Discrete Fourier Transform,DFT)的快速计算方法。

DFT 的定义为:对于长度为 N 的序列 x(n),其 DFT 为X(k) =∑n=0 到 N-1 x(n) e^(j 2π k n / N) ,其中 j 为虚数单位。

FFT 算法基于分治法的思想,将 N 点 DFT 分解为多个较小规模的DFT,从而大大减少了计算量。

常见的 FFT 算法有基 2 算法、基 4 算法等。

三、实验环境本次实验使用的编程语言为 Python,主要依赖 numpy 库来实现 FFT 计算和相关的数据处理。

四、实验步骤1、生成测试信号首先,生成一个包含不同频率成分的正弦波叠加信号,例如100Hz、200Hz 和 300Hz 的正弦波。

设定采样频率为 1000Hz,采样时间为 1 秒,以获取足够的采样点进行分析。

2、进行 FFT 计算使用 numpy 库中的 fft 函数对生成的测试信号进行 FFT 变换。

3、频谱分析计算 FFT 结果的幅度谱和相位谱。

通过幅度谱确定信号中各个频率成分的强度。

4、误差分析与理论上的频率成分进行对比,计算误差。

五、实验结果与分析1、幅度谱分析观察到在 100Hz、200Hz 和 300Hz 附近出现明显的峰值,对应于生成信号中的频率成分。

峰值的大小反映了相应频率成分的强度。

2、相位谱分析相位谱显示了各个频率成分的相位信息。

3、误差分析计算得到的频率与理论值相比,存在一定的误差,但在可接受范围内。

误差主要来源于采样过程中的量化误差以及 FFT 算法本身的近似处理。

实验二应用快速傅里叶变换对信号进行频谱分析

实验二应用快速傅里叶变换对信号进行频谱分析

实验二、应用快速傅里叶变换对信号进行频谱分析一、 实验目的1、 加深对DFT 算法原理和基本性质的理解,熟悉FFT 算法原理。

2、 掌握应用FFT 对信号进行频谱分析的方法。

3、 通过本实验进一步掌握频域采样定理。

4、 了解应用FFT 进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT 。

二、实验原理1、 一个连续时间信号()a x t 的频谱可以用它的傅里叶变换表示为:()()j t a a X j x t e dt +∞-Ω-∞Ω=⎰如果对信号进行理想采样,得:()()a x n x nT =,其中,T 为采样周期。

对()x n 进行Z 变换,得:()()n n X Z x n z +∞-=-∞=∑当jwtz e -=时,我们便得到序列傅氏变换SFT :()()jw jwnn X e x n e +∞-=-∞=∑其中w 称为数字角频率:/s w T F =Ω=Ω。

2、12()[()]jwa m w m X e X j T T Tπ+∞=-∞=-∑,序列的频谱是原模拟信号频谱的周期延拓,这样,可以通过分析序列的频谱,得到相应连续信号的频谱。

3、离散傅里叶变换(DFT )能更好的反映序列的频域特性。

当序列()x n 的长度为N 时,它的离散傅氏变换为:10()[()]()N knNn X k DFT X n x n W -===∑它的反变换为:11()[()]()N knN n x n IDFT X k X k W N--===∑ 比较Z 变换式和DFT 式,令k N z W -=,则10()|()[()]k NN knN z W n X z x n W DFT X n --====∑因此有()()|k Nz W X k X z -==即k N W -是z 平面单位圆上幅角为2/w kN π=的点,也即是将单位圆N 等分后的第k 点。

所以()X k 是()x n 的Z 变换在单位圆上的 等距采样,或者说是序列傅氏变换的等距采样。

实验二快速Fourier变换

实验二快速Fourier变换

实验二快速傅里叶变换(FFT) 及其应用一、实验目的1.在理论学习的基础上,通过本实验,加深对FFT 的理解,熟悉MATLAB 中的有关函数。

2.熟悉应用FFT 对典型信号进行频谱分析的方法。

3. 了解应用FFT 进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT。

4.熟悉应用FFT 实现两个序列的线性卷积和相关的方法。

二、实验原理与方法在各种信号序列中,有限长序列信号处理占有很重要地位,对有限长序列,我们可以使用离散Fouier 变换(DFT)。

这一变换不但可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列x(n) 的长度为N 时,它的DFT 定义为:反变换为:有限长序列的DFT是其Z变换在单位圆上的等距采样,或者说是序列Fourier 变换的等距采样,因此可以用于序列的谱分析。

FFT并不是与DFT不同的另一种变换,而是为了减少DFT 运算次数的一种快速算法。

它是对变换式进行一次次分解,使其成为若干小点数的组合,从而减少运算量。

常用的FFT是以 2 为基数的,其长度。

它的效率高,程序简单,使用非常方便,当要变换的序列长度不等于 2 的整数次方时,为了使用以 2 为基数的FFT,可以用末位补零的方法,使其长度延长至 2 的整数次方。

(一)在运用DFT 进行频谱分析的过程中可能的产生三种误差1.混叠序列的频谱是被采样信号频谱的周期延拓,当采样速率不满足Nyquist 定理时,就会发生频谱混叠,使得采样后的信号序列频谱不能真实的反映原信号的频谱。

避免混叠现象的唯一方法是保证采样速率足够高,使频谱混叠现象不致出现,即在确定采样频率之前,必须对频谱的性质有所了解,在一般情况下,为了保证高于折叠频率的分量不会出现,在采样前,先用低通模拟滤波器对信号进行滤波。

2.泄漏实际中我们往往用截短的序列来近似很长的甚至是无限长的序列,这样可以使用较短的DFT 来对信号进行频谱分析,这种截短等价于给原信号序列乘以一个矩形窗函数,也相当于在频域将信号的频谱和矩形窗函数的频谱卷积,所得的频谱是原序列频谱的扩展。

快速傅里叶变换概要

快速傅里叶变换概要

实验二快速傅立叶变换一、实验目的1.学习和掌握快速傅立叶变换(FFT)的实现过程和编程技术2.运用FFT分析正弦信号的频谱3.测试FFT的运算时间,比较FFT与DFT的运算速度,获得对FFT“快速”的感性认识。

4.锻炼和提高数字信号处理的程序设计和调试能力。

二、实验原理与方法FFT并不是与DFT不同的另一种变换,而是为了减少DFT运算次数的一种快速算法。

它是对DFT 变换式进行一次次分解,使其成为若干小点数的组合,从而减少运算量。

常用的FFT是以2为基数的,其长度N=2M。

它的效率高,程序简单,使用非常方便,当要变换的序列长度不等于2的整数次方时,为了使用以2为基数的FFT,可以用末尾补零的方法,使其长度延长至2的整数次方。

本实验运用时间抽取基2 FFT,其原理、信号流图和运算过程可参阅课堂笔记、教材和其它教科书。

FFT的实现要比DFT复杂,通常采用三个嵌套循环来实现。

最外面的循环是分级循环,N=2M 点的FFT分为M级计算。

中间一层是分组循环,一级内蝶形系数W k相同的蝶形构成一组。

最内层为蝶形计算的循环,一组内不同输入数据的蝶形逐个计算。

编程时要注意各级蝶形组之间的间隔、组内蝶形之间间隔、以及系数W k变化。

有不少书中有FFT程序可供参考,但要注意理解和弄懂,不可一味照搬,要尽量自己去编。

三、实验内容1.设计说明编制时间抽取基2 FFT程序计算前面DFT程序分析过的正弦信号,与DFT计算的结果进行比较,以验证所编程序的正确性。

FFT为复数运算,若用实数运算来实现,需要设置两个数组来存放输入输出数据。

其中一个用于存放数据的实部,另一个存放数据的虚部。

正弦输入信号为实数,则令其虚部为零。

同样,碟形运算也要化成实数来进行,分别算出实部和虚部。

当然也可以直接用复数数组和语句实现。

程序设计的难点和重点在于要合理安排和正确设置碟形运算的分级循环、级内分组循环和组内分碟形循环。

要注意乘法系数W N k的变化以及各循环变量的变化和调整。

fft实验分析实验报告

fft实验分析实验报告

fft实验分析实验报告FFT实验分析实验报告一、引言傅里叶变换(Fourier Transform)是一种重要的信号分析工具,它能够将一个信号分解成不同频率的成分。

快速傅里叶变换(Fast Fourier Transform,FFT)是一种高效的计算傅里叶变换的算法。

本实验旨在通过实际操作,探究FFT在信号分析中的应用。

二、实验设备与方法1. 实验设备:本实验使用的设备包括示波器、信号发生器和计算机。

2. 实验方法:(1)将信号发生器的输出接入示波器的输入端。

(2)调节信号发生器的参数,如频率、振幅等,产生不同的信号。

(3)通过示波器观察信号的波形,并记录相关数据。

(4)将示波器与计算机通过USB接口连接,将示波器上的数据传输到计算机上。

(5)使用计算机上的软件进行FFT分析,得到信号的频谱信息。

三、实验结果与分析1. 实验一:正弦波信号的FFT分析(1)设置信号发生器的频率为1000Hz,振幅为5V,产生一段正弦波信号。

(2)通过示波器观察信号的波形,并记录相关数据。

(3)将示波器上的数据传输到计算机上,进行FFT分析。

实验结果显示,正弦波信号的频谱图呈现出单个峰值,且峰值位于1000Hz处。

这说明FFT能够准确地分析出信号的频率成分,并将其可视化展示。

2. 实验二:方波信号的FFT分析(1)设置信号发生器的频率为500Hz,振幅为5V,产生一段方波信号。

(2)通过示波器观察信号的波形,并记录相关数据。

(3)将示波器上的数据传输到计算机上,进行FFT分析。

实验结果显示,方波信号的频谱图呈现出多个峰值,且峰值位于500Hz的倍数处。

这说明方波信号由多个频率成分叠加而成,FFT能够将其分解出来,并显示出各个频率成分的强度。

3. 实验三:复杂信号的FFT分析(1)设置信号发生器的频率为100Hz和200Hz,振幅分别为3V和5V,产生一段复杂信号。

(2)通过示波器观察信号的波形,并记录相关数据。

(3)将示波器上的数据传输到计算机上,进行FFT分析。

实验二_快速傅里叶变换FFT与DFT计算时间

实验二_快速傅里叶变换FFT与DFT计算时间

FFT提高运算速度的原理

FFT算法将长序列的DFT分解为短序列的 DFT。N点的DFT先分解为2个N/2点的DFT, 每个N/2点的DFT又分解为N/4点的DFT,等 等。最小变换的点数即所谓的“基数”。因 此,基数为2的FFT算法的最小变换(或称蝶 型)是2点的DFT。一般地,对N点FFT,对 应于N个输入样值,有N个频域样值与之对应。
实验数据和结论
(1)两个长度为N/2=4096/2=2048点的序列
直接线性卷积与N点的圆周卷积,两过程的 计算时间与计算结果比较 计算时间比较:direct_convolution_time =0.0460s fft_convolution_time =0s 计算结果如下所示
fft method circle convolution 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 -0.1 -0.2 4091 4092 4093 4094 4095 4096 4097 4098
计算结果比较N=10000点时:
direct convolution result
2
1.5
1
0.5
0
9990
9991
9992
9993
9994
9995
9996
9997
9998
9999
10000
两个长度为N/2=10000/2=5000点的序列直接线性卷积
fft method circle convolution
实验二 FFT与DFT计算时间的比 较及圆周卷积代替线性卷积的有 效性实验 一 实验目的 二 实验内容及要求 三 预做实验
一 实验目的
1:掌握FFT基2时间(或基2频率)抽选法,

快速傅里叶变换(含详细实验过程分析)

快速傅里叶变换(含详细实验过程分析)

[实验2] 快速傅里叶变换 (FFT) 实现一、实验目的1、掌握FFT 算法和卷积运算的基本原理;2、掌握用C 语言编写DSP 程序的方法;3、了解利用FFT 算法在数字信号处理中的应用。

二、实验设备 1. 一台装有CCS 软件的计算机; 2. DSP 实验箱的TMS320C5410主控板; 3. DSP 硬件仿真器。

三、实验原理 (一)快速傅里叶变换傅里叶变换是一种将信号从时域变换到频域的变换形式,是信号处理的重要分析工具。

离散傅里叶变换(DFT )是傅里叶变换在离散系统中的表示形式。

但是DFT 的计算量非常大, FFT 就是DFT 的一种快速算法, FFT 将DFT 的N 2步运算减少至 ( N/2 )log 2N 步。

离散信号x(n)的傅里叶变换可以表示为∑=-=10][)(N N nk N W n x k X , Nj N e W /2π-=式中的W N 称为蝶形因子,利用它的对称性和周期性可以减少运算量。

一般而言,FFT 算法分为时间抽取(DIT )和频率抽取(DIF )两大类。

两者的区别是蝶形因子出现的位置不同,前者中蝶形因子出现在输入端,后者中出现在输出端。

本实验以时间抽取方法为例。

时间抽取FFT 是将N 点输入序列x(n) 按照偶数项和奇数项分解为偶序列和奇序列。

偶序列为:x(0), x(2), x(4),…, x(N-2);奇序列为:x(1), x(3), x(5),…, x(N-1)。

这样x(n) 的N 点DFT 可写成:()()∑++∑=-=+-=12/0)12(12/02122)(N n kn NN n nkNW n x Wn x k X考虑到W N 的性质,即2/)2//(22/)2(2][N N j N j N W e e W ===--ππ因此有:()()∑++∑=-=-=12/02/12/02/122)(N n nkN k NN n nkN W n x WWn x k X或者写成:()()12()kN X k X k W X k =+由于X 1(k) 与X 2(k) 的周期为N/2,并且利用W N 的对称性和周期性,即:kNNkNWW-=+2/可得:()()12(/2)kNX k N X k W X k+=-对X1(k) 与X2(k)继续以同样的方式分解下去,就可以使一个N点的DFT最终用一组2点的DFT来计算。

快速傅立叶变换(FFT)算法-DSP实验

快速傅立叶变换(FFT)算法-DSP实验

快速傅立叶变换(FFT)算法实验摘要:FFT(Fast Fourier Transformation),即为快速傅里叶变换,是离散傅里叶变换的快速算法,它是根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。

这种算法大大减少了变换中的运算量,使得其在数字信号处理中有了广泛的运用。

本实验主要要求掌握在CCS环境下用窗函数法设计FFT快速傅里叶的原理和方法;并且熟悉FFT快速傅里叶特性;以及通过本次试验了解各种窗函数对快速傅里叶特性的影响等。

引言:快速傅里叶变换FFT是离散傅里叶变换DFT的一种快速算法。

起初DFT的计算在数字信号处理中就非常有用,但由于计算量太大,即使采用计算机也很难对问题进行实时处理,所以并没有得到真正的运用。

1965年J.W.库利和T.W.图基提出快速傅里叶变换,采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。

从此,对快速傅里叶变换(FFT)算法的研究便不断深入,数字信号处理这门新兴学科也随FFT的出现和发展而迅速发展。

根据对序列分解与选取方法的不同而产生了FFT的多种算法,基本算法是基2DIT和基2DIF。

FFT 的出现,使信号分析从时域分析向频域分析成为可能,极大地推动了信号分析在各领域的实际应用。

FFT在离散傅里叶反变换、线性卷积和线性相关等方面也有重要应用。

一、 实验原理:FFT 并不是一种新的变换,它是离散傅立叶变换(DFT )的一种快速算法。

由于我们在计算DFT 时一次复数乘法需用四次实数乘法和二次实数加法;一次复数加法则需二次实数加法。

每运算一个X (k )需要4N 次复数乘法及2N+2(N-1)=2(2N-1)次实数加法。

所以整个DFT 运算总共需要4N^2次实数乘法和N*2(2N-1)=2N(2N-1)次实数加法。

如此一来,计算时乘法次数和加法次数都是和N^2成正比的,当N 很大时,运算量是可观的,因而需要改进对DFT 的算法减少运算速度。

实验二、快速傅里叶变换实验

实验二、快速傅里叶变换实验

实验二、快速傅里叶变换实验一、实验目的1.加深对几个特殊概念的理解:“采样”……“混叠”;“窗函数”(截断)……“泄漏”;“非整周期截取”……“栅栏”。

2.加深理解如何才能避免“混叠”,减少“泄漏”,防止“栅栏”的方法和措施以及估计这些因素对频谱的影响。

3.对利用通用微型计算机及相应的FFT软件,实现频谱分析有一个初步的了解。

二、实验原理为了实现信号的数字化处理,利用计算机进行频谱分析――计算信号的频谱。

由于计算机只能进行有限的离散计算(即DFT),因此就要对连续的模拟信号进行采样和截断。

而这两个处理过程可能引起信号频谱的畸变,从而使DFT的计算结果与信号的实际频谱有误差。

有时由于采样和截断的处理不当,使计算出来的频谱完全失真。

因此在时域处理信号时要格外小心。

时域采样频率过低,将引起频域的“混叠”。

为了避免产生“混叠”,要求时域采样时必须满足采样定理,即:采样频率fs必须大于信号中最高频率fc的2倍(fs>2fc)。

因此在信号数字处理中,为避免混叠,依不同的信号选择合适的采样频率将是十分重要的。

频域的“泄漏”是由时域的截断引起的。

时域的截断使频域中本来集中的能量向它的邻域扩散(如由一个δ(f)变成一个sinc(f),而泄漏的旁瓣将影响其它谱线的数值。

时域截断还会引起“栅栏效应”,对周期信号而言,它是由于截断长度不等于周期信号的周期的整数倍而引起的。

因此避免“栅栏”效应的办法就是整周期截断。

综上所述,在信号数字化处理中应十分注意以下几点:1.为了避免“混叠”,要求在采样时必须满足采样定理。

1.为了减少“泄漏”,应适当增加截断长度和选择合适的窗2.对信号进行整周期截取,则能消除“栅栏数应”。

3.增加截断长度,则可提高频率分辨率。

三、预习内容熟悉Matlab语言、函数和使用方法;利用Matlab所提供的FFT函数编写程序。

四、实验内容及步骤调通所编写的程序,对下列信号〔函数〕进行离散FFT变换,根据题目的要求……FFT变换点数〔截断长度〕及采样频率,计算各点的傅里叶变换值,画出频谱图,对典型的谱线标出其幅值及相角。

实验二 快速傅里叶变换算法实验

实验二  快速傅里叶变换算法实验

快速傅里叶变换算法实验院系:电子与信息工程学院班级:电信10-2姓名:张玥学号:10071201026指导老师:郜参观快速傅里叶变换算法实验一、实验目的1、加深对DFT算法原理和基本性质的理解;2、熟悉FFT算法原理和FFT子程序的应用;3、学习用FFT对连续信号和时域信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。

二、实验设备计算机 CCS2.0版软件实验箱 DSP仿真器三、基本原理1、离散傅里叶变换DFT的定义:将时域的采样变换成频域的周期性离散函数,频域的采样也可以变换成时域的周期性离散函数,这样的变换称为离散傅里叶变换,简称DFT。

2、FFT是DFT的一种快速算法,将DFT的步运算减少为步,极大地提高了运算速度。

3、旋转因子的变化规律。

4、蝶形运算规律。

5、基2FFT算法。

四、实验步骤复习DFT的定义、性质和用DFT作谱分析的有关内容;1、复习FFT算法原理与编程思想,并对照DIT-FFT运算流程图和程序框图,了解本试验提供的FFT子程序;2、阅读本实验所提供的样例子程序;3、运行CCS软件,对样例程序进行跟踪,分析结果;记录必要的参数。

4、填写实验报告。

5、提供样例程序实验操作说明。

A、实验前准备:⑴、开关K9拨到右边,即仿真器选择连接右边的CPU:CPU2;⑵、“A/D转换单元”的拨码开关设置;⑶、拨码开关设置:JP3拨码开关:SW2拨码开关:S23拨码开关:⑷、检查:计算机、DSP仿真器、实验箱是否正确连接。

正确完成计算机、DSP仿真器和实验箱的连接后,系统上电。

B、实验⑴、启动CCS2.0,project/open打开“algorithm”目录“exp01_cpu2”中子目录下“exp01.pjt”工程文件;双击“exp01.pjt”及“source”可查看各源程序;加载“exp01.out”;在中断子程序中,flag=0处设置断点;单击“run”运行程序,程序将运行至断点处停止,如图(一)所示;图(一)⑵、用view/graph/time/frequency打开一个图形观察窗口;设置该观察图形窗口变量及参数;采用双踪观察在起始地址分别为x和mo,长度为128的单元中数值的变化,数值类型为32位浮点数,这两段存储单元中分别存放的是经A/D转换后的输入信号和对该信号进行FFT变换的结果如图(二)所示;图(二)单击“animate”运行程序,或按F10运行;调整模拟信号源的频率、幅值、种类观察窗口并观察输入信号波形及其FFT变换结果,如图(三)、图(四)所示;单击“Halt”暂停程序运行,关闭窗口,本实验结束。

数字信号处理实验二

数字信号处理实验二

实验二 快速傅里叶变换(FFT)及其应用一、思考题(1) 实验中的信号序列()c x n 和()d x n 在单位圆上的z 变换频谱()()c j j d X e X e ωω和会相同吗如果不同,说出哪一个低频分量更多一些,为什么答:设j Z r e ω=⨯ ()()n n G z g n z ∞-=-∞=⨯∑因为为单位圆,故r=1.因为()()j j n n G e g n eωω∞-=-∞=⨯∑,故3723456704()(8)23432j j n j n j j j j j j j c n n X e nen e e e e e e e e ωωωωωωωωωω---------===+-=++++++∑∑ 7235670()(4)43223j j n j j j j j j d n X e n ee e e e e e ωωωωωωωω-------==-=+++---∑比较可知频谱不相同,()c X n 的低频分量多。

(2) 对一个有限长序列进行DFT 等价于将该序列周期延拓后进行DFS 展开,因为DFS 也只是取其中一个周期来运算,所以FFT 在一定条件下也可以用以分析周期信号序列。

如果实正弦信号()sin(2),0.1x n fn f π== 用16点FFT 来做DFS 运算,得到的频谱是信号本身的真实谱吗为什么答:针对原来未经采样的连续时间信号来说,FFT 做出来的永远不会是信号本身的真实频谱,只能够是无限接近。

FFT 频谱泄露问题是一定会存在的,因为毕竟采样率再高,也不能完全达到原来的连续时间信号准确。

原题的采样率是1/10,就是将2*pi 分成10份,即每个正弦波周期进行10次采样,这样的采样率很低,而最后你只截取16个点来做分析,泄露一般会挺严重,看到的频谱,应该是一个上头尖,下面慢慢变宽的尖锥形,而纯正的正弦波的理想频谱应该是在某频点只有一个尖峰。

二.?实验原理:?(1)混叠:采样序列的频谱是被采样信号频谱的周期延拓,当采样频率不满足奈奎斯特采样定理的时候,就会发生混叠,使得刺痒后的序列信号的频谱不能真实的反映原采样信号的频谱。

实验二快速傅里叶变换(FFT)及其应用

实验二快速傅里叶变换(FFT)及其应用

《数字信号处理》课程
(2010-2011学年第1学期)成绩:
实验二快速傅里叶变换(FFT)及其应用
学生姓名:闫春遐
所在院系:电子信息工程学院自动化系
年级专业:2008级自动化系
学号:00824049
指导教师:王亮
完成日期:2010年9月27日
实验二快速傅里叶变换(FFT )及其应用
一、实验目的(1)在理论学习的基础上,通过本实验,加深对
FFT 的理解,熟悉MATLAB 中的有关函数。

(2)应用FFT 对典型信号进行频谱分析。

(3)了解应用FFT 进行信号频谱分析过程可能出现的问题,以便在实际中正确应用FFT 。

(4)应用FFT 实现序列的线性卷积和相关。

二、实验内容
实验中用到的信号序列:
a )高斯序列
2
()015()0
n p q a e n
x n 其他b )衰减正弦序列
sin(2)
015()0an b e fn n x n 其他
c )三角波序列
03()847
0c n
n x n n
n 其他d )反三角波序列
4
03()447
0d n n x n n
n 其他上机实验内容:
(1)观察高斯序列的时域和幅频特性,固定信号()a x n 中参数8p ,改变q 的值,使q 分别等于2、4、8,观察他们的时域和幅频特性,了解当
q 取不同值时,对信号的时域和幅频特性的影响;固定8q ,改变p ,使p 分别等于8、13、。

快速傅立叶变换(FFT)算法实验

快速傅立叶变换(FFT)算法实验

快速傅立叶变换(FFT)算法实验实验目得:1、加深对DFT 算法原理与基本性质得理解;2、熟悉FFT 得算法原理与FFT子程序得算法流程与应用;3、学习用FFT 对连续信号与时域信号进行频谱分析得方法。

程序流程图:傅立叶变换就就是一种将信号从时域到频域得变换形式,就就是声学、语音、电信与信号处理等领域中得一种重要分析工具。

离散傅立叶变换(DFT)就就是连续傅立叶变换在离散系统中得表现形式,由于DFT 得计算量很大,因此在很长时间内其应用受到很大得限制。

快速傅立叶变换(FFT)就就是离散傅立叶变换得一种高效运算方法。

由于我们在计算DFT 时一次复数乘法需用四次实数乘法与二次实数加法;一次复数加法则需二次实数加法。

运算一个X(k)需要4N 次复数乘法及2N+2(N-1)=2(2N-1)次实数加法。

所以整个DFT运算总共需要4N^2 次实数乘法与N*2(2N-1)=2N(2N-1)次实数加法。

如此一来,计算时乘法次数与加法次数都就就是与N^2成正比得,当N 很大时,运算量就就是可观得,因而需要改进对DFT 得算法减少运算速度。

我们可以将DFT 运算中有些项合并。

我们先设序列长度为N=2^L,L为整数。

将N=2^L 得序列x(n)(n=0,1,……,N-1),按N得奇偶分成两组,也就就就是说我们将一个N 点得DFT 分解成两个N/2点得DFT,她们又重新组合成一个如下式所表达得N 点DFT:一般来说,输入被假定为连续得。

当输入为纯粹得实数得时候,我们就可以利用左右对称得特性更好得计算DFT。

这样得RFFT优化算法就就是包装算法:首先2N 点实数得连续输入称为“进包”。

其次N 点得FFT被连续运行。

最后作为结果产生得N 点得合成输出就就是“打开”成为最初得与DFT 相符合得2N 点输入。

使用这一思想,我们可以划分FFT得大小,它有一半花费在包装输入O(N)得操作与打开输出上。

AD原理图源程序#include<math、h>#include"DSP2833x_Device、h"// DSP2833x Header "DSP2833x_Examples、h"// DSP2833x Examples Include Fi#include"m、h"#include"i_cmplx、h"#include"ext_inf、h"/*********************************************************************************/#if (CPU_FRQ_150MHZ) // Default - 150 MHz SYSCLKOUT#defineADC_MODCLK 0x3// HSPCLK =SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*3) = 25、0 MHz#endif#if (CPU_FRQ_100MHZ)#define ADC_MODCLK 0x2//HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 100/(2*2) = 25、0 MHz#endif#define ADC_CKPS 0x1// ADC moduleclock =HSPCLK/2*ADC_CKPS = 25、0MHz/(1*2) = 12、5MHz#defineADC_SHCLK0xf //S/H widthin ADCmodule periods = 16 ADC clocks#defineAVG 1000 // Average sample limit#define ZOFFSET 0x00 // Average Zero offset#define BUF_SIZE160// Sample buffer size/*********************************************************************************//////////////////unsignedintSampleLong;#define SAMPLELONG 3////////////////////unsigned int Ad_data[1536]={0};unsignedint Ad_data1[1536]={0};unsigned int convcount = 0;volatile unsigned intadconvover =0;////////////////int m=0;double n;double p,q;PLEX DDataBuffer[512]={0};Uint32 mod[512];//////////////////////unsignedint i;/*********************************************************************************/// Prototype statements for functionsfound within this file、interruptvoidadc_isr(void);/*********************************************************************************/void main(void){ﻩ#if SAMPLELONG==1ﻩSampleLong =256;#endif#if SAMPLELONG==2ﻩSampleLong=512;ﻩ#endif#ifSAMPLELONG==3ﻩSampleLong=1024;ﻩ#endif// Step 1、Initialize System Control:// PLL,WatchDog, enable Peripheral Clocks//This example function isfound in the DSP2833x_SysCtrl、c file、InitSysCtrl();// Step 2、 Initialize GPIO:// Thisexample function is found in the DSP2833x_Gpio、c// illustrates how to setthe GPIOto it's default state、InitGpio(); //Skipped for this example// Step3、Clearall interrupts and initialize PIE vector table://Disable CPUinterruptsDINT;//Initialize the PIEcontrol registers totheir defaultstate、// The defaultstate is all PIE interrupts disabled and flag s// are cleared、// This function isfoundin the DSP2833x_PieCtrl、c file、InitPieCtrl();// Disable CPU interrupts and clear all CPUinterrupt flags: IER = 0x0000;IFR = 0x0000;// Initialize the PIE vector table with pointers to the shell Int errupt// Service Routines (ISR)、// Thiswill populatethe entire table, even if theinterrupt// is not usedin this example、 This is useful for debug purpose s、//The shell ISR routines are found in DSP2833x_DefaultIsr、c、// Thisfunctionis found inDSP2833x_PieVect、c、InitPieVectTable();//Interrupts thatare used inthisexample are re-mapped to// ISRfunctions found within this file、EALLOW; //This is neededto write to EALLOW protected regi sterPieVectTable、ADCINT= &adc_isr;EDIS; // This is needed to disable write to EALLOW prote cted registers// Step 4、 Initialize all theDevice Peripherals:// This function is found in DSP2833x_InitPeripherals、c// InitPeripherals();// Notrequired for this exampleInitAdc();// For this example, init the ADC// Step5、User specific code,enable interrupts://Enable ADCINTin PIEPieCtrlRegs、PIEIER1、bit、INTx6 = 1;IER|= M_INT1; //Enable CPU Interrupt1EINT;// Enable Global interrupt INTMERTM;// EnableGlobal realtime interrupt DBGMAdcRegs、ADCTRL1、bit、ACQ_PS =ADC_SHCLK;AdcRegs、ADCTRL3、bit、ADCCLKPS = ADC_CKPS;AdcRegs、ADCTRL1、bit、SEQ_CASC =1; // 0 Non-Cas caded Mode; 1 Cascaded ModeAdcRegs、ADCTRL2、bit、INT_ENA_SEQ1 = 0x1;AdcRegs、ADCTRL2、bit、RST_SEQ1= 0x1;AdcRegs、ADCCHSELSEQ1、bit、CONV00 = 0x6;AdcRegs、ADCMAXCONV、bit、MAX_CONV1 = 15;AdcRegs、ADCTRL2、bit、SOC_SEQ1 =0x1;for(;;){ﻩif(adconvover==1){ﻩﻩﻩfor(i=0;i<(SampleLong/2);i++)ﻩﻩﻩ{ﻩﻩDDataBuffer[i]、real=Ad_data[2*i];//short intﻩﻩDDataBuffer[i]、imag=Ad_data[2*i+1];//short intﻩﻩ}ﻩﻩswitch(SampleLong)ﻩﻩﻩ{ﻩﻩcase256:/*256point*/ﻩfft256(DDataBuffer,256);m=0;ﻩfor(i=0;i<128;i++)ﻩﻩ{ﻩﻩp=DDataBuffer[i]、real;ﻩq=DDataBuffer[i]、imag;ﻩﻩﻩﻩn=(long)p*(long)p+(long)q*(long)q;mod[m]=sqrt(n);ﻩm++;ﻩﻩ}ﻩﻩbreak;case 512: /*512 point*/ﻩ fft512(DDataBuffer,512);m=0;ﻩfor(i=0;i<256;i++)ﻩﻩﻩﻩ{ﻩp=DDataBuffer[i]、real;ﻩq=DDataBuffer[i]、imag;ﻩﻩﻩﻩn=(long)p*(long)p+(long)q*(long)q;ﻩﻩmod[m]=sqrt(n);ﻩﻩm++;ﻩﻩﻩﻩ}ﻩﻩbreak;ﻩﻩcase 1024:/*1024point*/ﻩﻩfft1024(DDataBuffer,1024);ﻩm=0;for(i=0;i<512;i++)ﻩ{p=DDataBuffer[i]、real;ﻩﻩq=DDataBuffer[i]、imag;n=(long)p*(long)p+(long)q*(long)q;ﻩﻩﻩmod[m]=sqrt(n);ﻩﻩm++;}ﻩbreak;}ﻩadconvover=0;ﻩ convcount=0;ﻩﻩﻩﻩ}ﻩ}}interrupt void adc_isr(void){//If40 conversions have been logged, start overif(convcount == SampleLong){adconvover = 1;}else{Ad_data[convcount]= AdcRegs、ADCRESULT0 >>4;convcount++;}// Reinitialize fornext ADC sequenceAdcRegs、ADCTRL2、bit、RST_SEQ1 = 1; //Reset SEQ1AdcRegs、ADCST、bit、INT_SEQ1_CLR =1;//Clear INT SEQ1 bitPieCtrlRegs、PIEACK、all = PIEACK_GROUP1;// Acknowledge in terruptto PIEAdcRegs、ADCTRL2、bit、SOC_SEQ1 = 0x1;return;}。

实验二应用快速傅里叶变换对信号进行频谱分析

实验二应用快速傅里叶变换对信号进行频谱分析

实验二应用快速傅里叶变换对信号进行频谱分析引言频谱分析是一个常见的信号处理技术,它可以将一个信号分解成一系列不同频率的成分。

其中,傅里叶变换是一种常用的频谱分析方法。

在本实验中,我们将学习并应用快速傅里叶变换(FFT)算法对信号进行频谱分析。

一、理论背景快速傅里叶变换(FFT)是一种基于离散傅里叶变换(DFT)的算法,它能够快速计算出信号的频域表达。

傅里叶变换的公式为:X(k)=Σ(x(n)*e^(-j*2π*n*k/N))其中,X(k)代表频域上的第k个频率成分,x(n)代表时域上的第n个采样点,e为自然对数的底,j为虚数单位,N为采样点的总数。

快速傅里叶变换的主要思想是将信号分解成一系列长度为2的子序列,再通过迭代地应用DFT对这些子序列进行变换。

这样可以大幅度减少计算量,使得FFT算法在实际应用中具有较高的效率。

二、实验目的1.掌握快速傅里叶变换(FFT)算法的原理及实现方法。

2.学习如何使用FFT进行频谱分析,并理解频谱图的含义。

3.通过实验对比分析,了解FFT与其他频谱分析方法的差异。

三、实验步骤1.准备实验材料和仪器:一台电脑、MATLAB或其他信号分析软件。

2. 定义并生成需要分析的信号。

可以使用MATLAB中的sin、cos、randn等函数生成均匀分布或正态分布的随机信号,设置采样率和采样点数。

3.对信号进行FFT分析。

使用FFT算法对信号进行傅里叶变换,并得到频谱图。

4.对频谱图进行分析。

观察频谱图中的主要频率成分,并分析信号的频谱特征。

四、实验结果及分析1.生成信号并进行FFT分析。

通过MATLAB或其他信号分析软件,生成需要分析的信号,并进行FFT变换。

2.绘制频谱图。

根据FFT的结果,绘制出信号的频谱图。

频谱图通常以频率为横坐标,幅度为纵坐标进行绘制。

3.频谱分析。

观察频谱图,分析信号的频谱特征。

可以通过主要频率成分、频谱能量分布等参数来进行分析。

五、实验注意事项1.确保信号的采样率和采样点数足够满足信号分析的要求。

实验二:用FFT做谱分析

实验二:用FFT做谱分析

实验二:用FFT做谱分析一、实验目的1.进一步加深DFT算法原理和基本性质的理解(因为 FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的基本性质)。

2.熟悉FFT算法原理和FFT子程序的应用。

3.学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。

二、实验原理1.快速傅立叶变换(FFT)算法长度为N的序列的离散傅立叶变换为:N点的DFT分解为两个N/2点的DFT,每个N/2点的DFT又可以分解为两个N/4点的DFT。

依此类推,当,可分解为一系列2点DFT运算。

当,为了使用以2为基的FFT,可以用末尾补零的方法,使其长度延长至2的整数次方。

序列的离散傅立叶反变换为并无实质性区别,因此可将FFT和快速傅立叶反变换(IFFT)算法合并在同一个程序中。

2.利用FFT进行频谱分析若信号本身是有限长的序列:幅度谱相位谱若信号是模拟信号,首先必须对信号进行采样,使之变成离散信号,然后就可按照前面的方法用FFT来对连续信号进行谱分析。

三、实验步骤1.复习DFT的定义、性质和用DFT作谱分析的有关内容。

2.理解FFT与DFT之间的关系:FFT并不是一种新的变换,而是DFT的一种快速算法。

3.理解 MATLAB实验流图图 2.1 主程序框图4.编制信号产生子程序,产生以下典型信号及调用FFT子程序绘制|X(K)|:信号一:x1(n) = R4(n)实验代码:n=[0:1:3];x1=ones(1,4);figure(1);stem(n,x1);xlabel('n');ylabel('x1');title('时域波形');figure(2);k1=0:7;X11=fft(x1,8);X11=abs(X11);subplot(2,1,1):stem(k1,X11); xlabel('k1');ylabel('X11');title('8点FFT频域波形');k2=0:15;X12=fft(x1,16);X12=abs(X12);subplot(2,1,2):stem(k2,X12); xlabel('k2');ylabel('X12');title('16点FFT频域波形');图1.时域波形图2.8点及16点FFT频域波形信号二:x2(n) =实验代码:n=[0:1:7];x2=[1:1:4,4:-1:1];figure(3);stem(n,x2);xlabel('n');ylabel('x2');title('时域波形');figure(4);k3=0:7;X21=fft(x2,8);X21=abs(X21);subplot(2,1,1):stem(k3,X21); xlabel('k3');ylabel('X21');title('8点FFT频域波形');k4=0:15;X22=fft(x2,16);X22=abs(X22);subplot(2,1,2):stem(k4,X22); xlabel('k4');ylabel('X22');title('16点FFT频域波形');图3.时域波形图4.8点及16点FFT频域波形信号三:x3(n) =实验代码:n=[0:1:7];x3=[4:-1:1,1:1:4];figure(5);stem(n,x3);xlabel('n');ylabel('x3');title('时域波形');figure(6);k5=0:7;X31=fft(x3,8);X31=abs(X31);subplot(2,1,1):stem(k5,X31); xlabel('k5');ylabel('X31');title('8点FFT频域波形');k6=0:15;X32=fft(x3,16);X32=abs(X32);subplot(2,1,2):stem(k6,X32); xlabel('k6');ylabel('X32');title('16点FFT频域波形');图5.时域波形图6.8点及16点FFT频域波形信号四:x4(n) = cos(πn /4)实验代码:n=0:1:15;x4=cos(pi*n/4);figure(7);stem(n,x4);xlabel('n');ylabel('X4');title('时域波形');figure(8);k7=0:7;X41=fft(x4,8);X41=abs(X41);subplot(2,1,1):stem(k7,X41); xlabel('k7');ylabel('X41');title('8点FFT频域波形');k8=0:15;X42=fft(x4,16);X42=abs(X42);subplot(2,1,2):stem(k8,X42); xlabel('k8');ylabel('X42');title('16点FFT频域波形');图7.时域波形图8.8点及16点FFT频域波形信号五:x5(n) = sin(πn /8)实验代码:n=0:1:15;x5=sin(pi*n/8);figure(9);stem(n,x5);xlabel('n');ylabel('X5');title('时域波形');figure(10);k9=0:7;X51=fft(x5,8);X51=abs(X51);subplot(2,1,1):stem(k9,X51); xlabel('k9');ylabel('X51');title('8点FFT频域波形');k10=0:15;X52=fft(x5,16);X52=abs(X52);subplot(2,1,2):stem(k10,X52); xlabel('k10');ylabel('X52');title('16点FFT频域波形');图9.时域波形图10.8点及16点FFT频域波形信号六:x6(t) = cos8πt + cos16πt + cos20πt 实验代码:Dt=1/64;t=0:Dt:(1-1/64);x6=cos(8*pi*t)+cos(16*pi*t)+cos(20*pi*t);figure(11);subplot(2,1,1):plot(t,x6);xlabel('t');ylabel('x6');title('时域波形');n=0:1:63;subplot(2,1,2):stem(n,x6); xlabel('n');ylabel('x6');title('时域抽样波形');figure(12);k11=0:15;X61=fft(x6,16);X61=abs(X61);subplot(3,1,1):stem(k11,X61); xlabel('k11');ylabel('X61');title('16点FFT频域波形');k12=0:31;X62=fft(x6,32);X62=abs(X62);subplot(3,1,2):stem(k12,X62); xlabel('k12');ylabel('X62');title('32点FFT频域波形');k13=0:63;X63=fft(x6,64);X63=abs(X63);subplot(3,1,3):stem(k13,X63); xlabel('k13');ylabel('X63');title('64点FFT频域波形');图11.时域波形(连续信号)及抽样波形图12.16点、32点及64点FFT频域波形注意:如果给出的是连续信号xa(t),则首先要根据其最高频率确定抽样频率fs以及由频率分辨率选择抽样点数N,然后对其进行软件抽样(即计算x(n)=xa(nT),0≤n≤N-1),产生对应序列 x(n)。

《数字图像处理(实验部分)》实验2_快速傅立叶变换

《数字图像处理(实验部分)》实验2_快速傅立叶变换

《数字图像处理(实验部分)》教案实验二:快速傅立叶变换1.实验目的1.掌握MATLAB 的基本操作。

2.了解数字图像处理在MATLAB中的基本处理过程。

3.学习快速傅立叶变换的原理,观察算法处理结果2.实验设备2.1.PC 兼容机一台;操作系统为WindowsWindowsXP。

2.2.数字图像处理开发环境:MATLAB软件3.实验原理见教材.4.实验步骤.1 打开MA TLAB开发环境.2点击MA TLAB窗口上File菜单,选择New-〉M—File,在弹出的Edit编辑器内输入如下程序:I=imread('pout.tif');figure(1),subplot(1,3,1),imshow(I);I1=I;I2=I;i=sqrt(-1);m=nextpow2(291);n=240;N=2^m;for p=1:1:n %rowif 291<Nx=[I(p*291-290:p*291),zeros(1,N-291)];x=im2double(x);endnxd=bin2dec(fliplr(dec2bin([1:N]-1,m)))+1;y=x(nxd);for mm=1:mNmr=2^mm;u=1;WN=exp(-i*2*pi/Nmr);for j=1:Nmr/2for k=j:Nmr:Nkp=k+Nmr/2;q=(y(kp))*u;y(kp)=y(k)-q;y(k)=y(k)+q;endu=u*WN;% T=0.001;% D=1/(N*T);% K=floor((-(N-1)/2:((N-1)/2)));% Y=fftshift(y);% subplot(2,1,1),plot(K*D,abs(Y));% subplot(2,1,2),plot(K*D,angle(Y));endend%T=0.001;%D=1/(N*T);%K=floor((-(N-1)/2:((N-1)/2)));Y1=fftshift(y);Y2=abs(Y1);Y3=im2uint8(Y2);I1(p*291-290:p*291)=Y3(1:291);endsubplot(1,3,2),imshow(I1);m=nextpow2(240);n=291;N=2^m;for p=1:1:n %colfor t=1:1:240T(t)= I1(t*291-290+p-1);endif 240<Nx=[T(1:240),zeros(1,N-240)];elsex=T;endx=im2double(x);nxd=bin2dec(fliplr(dec2bin([1:N]-1,m)))+1;y=x(nxd);% i=sqrt(-1);for mm=1:mNmr=2^mm;u=1;WN=exp(-i*2*pi/Nmr);for j=1:Nmr/2for k=j:Nmr:Nkp=k+Nmr/2;q=(y(kp))*u;y(kp)=y(k)-q;y(k)=y(k)+q;endu=u*WN;% T=0.001;% D=1/(N*T);% K=floor((-(N-1)/2:((N-1)/2)));% Y=fftshift(y);% subplot(2,1,1),plot(K*D,abs(Y));% subplot(2,1,2),plot(K*D,angle(Y));endend%T=0.001;%D=1/(N*T);%K=floor((-(N-1)/2:((N-1)/2)));Y1=fftshift(y);Y2=abs(Y1);Y3=im2uint8(Y2);for t=1:1:240I2(t*291-290+p-1)=Y3(t);endendsubplot(1,3,3),imshow(I2);.3将该程序保存,并点击工具栏中Run按钮,程序会自动运行,并显示出结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

快速傅里叶变换算法实验
院系:电子与信息工程学院
班级:电信10-2
姓名:张玥
学号:10071201026
指导老师:郜参观
快速傅里叶变换算法实验
一、实验目的
1、加深对DFT算法原理和基本性质的理解;
2、熟悉FFT算法原理和FFT子程序的应用;
3、学习用FFT对连续信号和时域信号进行谱分析的方法,了解可能
出现的分析误差及其原因,以便在实际中正确应用FFT。

二、实验设备
计算机 CCS2.0版软件实验箱 DSP仿真器
三、基本原理
1、离散傅里叶变换DFT的定义:将时域的采样变换成频域的周期性离散函数,频域的采样也可以变换成时域的周期性离散函数,这样的变换称为离散傅里叶变换,简称DFT。

2、FFT是DFT的一种快速算法,将DFT的步运算减少为
步,极大地提高了运算速度。

3、旋转因子的变化规律。

4、蝶形运算规律。

5、基2FFT算法。

四、实验步骤
复习DFT的定义、性质和用DFT作谱分析的有关内容;
1、复习FFT算法原理与编程思想,并对照DIT-FFT运算流程图
和程序框图,了解本试验提供的FFT子程序;
2、阅读本实验所提供的样例子程序;
3、运行CCS软件,对样例程序进行跟踪,分析结果;记录
必要的参数。

4、填写实验报告。

5、提供样例程序实验操作说明。

A、实验前准备:
⑴、开关K9拨到右边,即仿真器选择连接右边的CPU:CPU2;
⑵、“A/D转换单元”的拨码开关设置;
⑶、拨码开关设置:
JP3拨码开关:
SW2拨码开关:
S23拨码开关:
⑷、检查:计算机、DSP仿真器、实验箱是否正确连接。

正确完成计算机、DSP仿真器和实验箱的连接后,系统上电。

B、实验
⑴、启动CCS2.0,project/open打开“algorithm”目录“exp01_cpu2”中子目录下“exp01.pjt”工程文件;双击“exp01.pjt”及“source”可查看各源程序;加载“exp01.out”;在中断子程序中,flag=0处设置断点;单击“run”运行程序,程序将运行至断点处停止,如图(一)所示;
图(一)
⑵、用view/graph/time/frequency打开一个图形观察窗口;设置该观察图形窗口变量及参数;采用双踪观察在起始地址分别为x和mo,长度为128的单元中数值的变化,数值类型为32位浮点数,这两段存储单元中分别存放的是经A/D转换后的输入信号和对该信号进行FFT变换的结果如图(二)所示;
图(二)
单击“animate”运行程序,或按F10运行;调整模拟信号源的频率、幅值、种类观察窗口并观察输入信号波形及其FFT变换结果,如图(三)、图(四)所示;单击“Halt”暂停程序运行,关闭窗口,本实验结束。

图(三)
图(四)五、子程序流程图:。

相关文档
最新文档