实验3++FFT算法的应用

合集下载

数字信号实验三用FFT做谱分析实验报告

数字信号实验三用FFT做谱分析实验报告

南昌航空大学实验报告二○一六 年 五 月 二十一 日课程名称: 数字信号处理 实验名称:用FFT 做谱分析 班级:姓名: 同组人: 指导老师评定: 签名: 一、实验目的 (1)进一步加深DFT 算法原理和基本性质的理解(因为FFT 只是DFT 的一种快速算法,所以FFT 的运算结果必然满足DFT 的基本性质)。

(2)学习用FFT 对连续星号和时域离散信号进行谱分析误差及其原因,以便在实际中正确应用FFT二、实验内容(1)⎩⎨⎧≤≤= 050 1)(其他n n x 构造DFT 函数计算)(n x 的10点DFT ,20点的DFT 并画出图形。

(2)利用FFT 对下列信号逐个进行谱分析并画出图形nn x c nn x n R n x a 8sin )(4cos )(b )()(3241π、π、、===以上3个序列的FFT 变换区间N=8,16 (3)设一个序列中含有两种频率成分,05.2,221HZ f HZ f ==,采样频率取为)/ 2sin()/ 2sin()(,1021s s s f n f f n f n x HZ f ππ即+==要区分初这两种频率成份,必须满足400>N ,为什么?计算X(k)512),n c、取x(n)(0计算X(k)512,n 0以补零方式使其加长到b、将a中的x(n)X(k)n)的DFT 128)时,计算x(n a、取x(n)(0<≤<≤<≤(4)令)()()(3n x n x n x x +=用FFT 计算8点和16点离散傅立叶变换并画出图形,分析DFT 的线性。

令)()()(32n jx n x n x +=用FFT 计算8点和16点离散傅立叶变换并画出图形,分析DFT 的对称性。

三、实验代码及实验图:1.N1=10;N2=20;n1=0:N1-1;n2=0:N2-1;xn1=[ones(1,6),zeros(1,(N1-6))]; xn2=[ones(1,6),zeros(1,(N2-6))]; Xk10=dft(xn1,N1);Xk20=dft(xn2,N2);subplot(2,1,1)stem(n1,abs(Xk10),'.');ylabel('xn1的幅');xlabel('N=10'); subplot(2,1,2)stem(n2,abs(Xk20),'.');ylabel('xn1的幅');xlabel('N=20');2.N1=8;N2=16;n1=0:N1-1;n2=0:N2-1;x1=[1 1 1 1];Xk11=fft(x1,N1);subplot(3,2,1)stem(n1,abs(Xk11),'.'); ylabel('x1');xlabel('N=8'); Xk12=fft(x1,N2);subplot(3,2,2)stem(n2,abs(Xk12),'.'); ylabel('x1');xlabel('N=16');n=0:15;x2=cos((pi*n)/4);Xk21=fft(x2,N1);subplot(3,2,3)stem(n1,abs(Xk21),'.');ylabel('x2');xlabel('N=8'); Xk22=fft(x2,N2);subplot(3,2,4)stem(n2,abs(Xk22),'.'); ylabel('x2');xlabel('N=16');n=0:15;x3=sin((pi*n)/8);Xk31=fft(x3,N1);subplot(3,2,5)stem(n1,abs(Xk31),'.'); ylabel('x3');xlabel('N=8'); Xk32=fft(x3,N2);subplot(3,2,6)stem(n2,abs(Xk32),'.'); ylabel('x3');xlabel('N=16');3.f1=2;f2=2.05;fs=10;N1=128;n1=0:N1-1;xn1=sin(2*pi*f1*n1/fs)+sin(2*pi* f2*n1/fs);Xk1=dft(xn1,N1);subplot(3,1,1)stem(n1,abs(Xk1),'.');xlabel('N=128');N2=512;n2=0:N2-1;xn2=[xn1,zeros(1,(512-N1))];Xk2=dft(xn2,N2);subplot(3,1,2)stem(n2,abs(Xk2),'.');xlabel('在xn后补零');N3=512;n3=0:N3-1;xn3=sin(2*pi*f1*n3/fs)+sin(2*pi* f2*n3/fs);Xk3=dft(xn3,N3);subplot(3,1,3)stem(n3,abs(Xk3),'.');xlabel('N=512');4.n=0:15;x2=cos((pi*n)/4);x3=sin((pi*n)/8);xn=x2+x3;N1=8;N2=16;n1=0:N1-1;n2=0:N2-1; Xk8=fft(xn,N1);subplot(2,1,1)stem(n1,abs(Xk8),'.');ylabel('xn');xlabel('N=8'); Xk16=fft(xn,N2);subplot(2,1,2)stem(n2,abs(Xk16),'.'); ylabel('x1');xlabel('N=16');5.n=0:15;x2=cos((pi*n)/4);x3=sin((pi*n)/8);xn=x2+j*x3;N1=8;N2=16;n1=0:N1-1;n2=0:N2-1; Xk8=fft(xn,N1);subplot(2,1,1)stem(n1,abs(Xk8),'.'); xlabel('N=8');Xk16=fft(xn,N2);subplot(2,1,2)stem(n2,abs(Xk16),'.'); xlabel('N=16');四、实验总结1.通过此次实验加深DFT算法原理和基本性质的理解,掌握了离散时间信号的FFT变换的方法,明白其频谱是以抽样点数N为周期的周期延拓。

实验三FFT算法的应用

实验三FFT算法的应用

实验三FFT算法的应用FFT(快速傅里叶变换)算法是一种非常重要的数学算法,它在信号处理、图像处理、通信、机器学习等领域都有广泛的应用。

本文将重点介绍FFT算法的应用。

1.信号处理信号处理是FFT算法最常见的应用领域之一、FFT可以将时域信号转换为频域信号,从而可以对信号的频谱特性进行分析。

例如,声音信号经过FFT变换可以得到频谱图,从而可以分析信号的频率成分、谐波等信息。

这对于音频的编码、降噪、音频信号比对等应用都非常有用。

2.图像处理在图像处理中,FFT算法通常用于图像的频域滤波、图像压缩、图像增强等方面的应用。

通过将图像转换为频域信号,可以对图像进行频域滤波,如低通滤波、高通滤波等,从而实现图像的模糊、锐化等效果。

此外,FFT算法还可以用于图像的相位修复、图像的去噪等应用。

3.通信系统在通信系统中,FFT算法广泛应用于OFDM(正交频分复用)等技术中。

OFDM是一种多载波调制技术,它将信号分为多个子载波进行传输,每个子载波上的数据可以通过FFT算法进行处理。

FFT算法可以将多路信号变换到频域,然后利用频域多路复用技术将这些信号通过多个子载波同时传输,从而提高信号的传输效率。

4.语音识别在语音识别中,FFT算法被广泛应用于声音特征的提取。

通过对声音信号进行FFT变换,可以得到频谱图,并从频谱图中提取出声学特征,如语音的共振峰、基音频率等。

这些特征可以用于语音识别算法的训练和分类,从而实现对语音的识别和理解。

5.生物医学工程在生物医学工程中,FFT算法可以用于心电图信号的分析、脑电图信号的处理、血氧信号的提取等方面。

通过对生物信号进行FFT变换,可以得到信号的频域特性,从而可以分析信号的频率成分、周期性、幅值等信息,为生物医学工程的疾病诊断和治疗提供有力支持。

总之,FFT算法是一种强大的数学工具,具有广泛的应用领域。

无论是在信号处理、图像处理、通信系统、语音识别还是生物医学工程等领域,FFT算法都发挥着重要的作用,为相关应用提供了有效的数学基础和算法支持。

实验3 用FFT对信号作频谱分析(预习报告)

实验3 用FFT对信号作频谱分析(预习报告)

实验3 用FFT 对信号作频谱分析1.实验程序及运行结果实验内容1:对非周期序列进行谱分析 对以下序列进行谱分析 14()()x n R n =2103()8470n n x n nn else +≤≤⎧⎪=-≤≤⎨⎪⎩ 3403()3470n n x n n n else-≤≤⎧⎪=-≤≤⎨⎪⎩选择FFT 的变换区间N 为8和16 两种情况进行频谱分析。

分别打印其幅频特性曲线, 并进行对比、分析和讨论。

源程序:shzxhchlshiyan3_1 %用FFT 对非周期序列进行谱分析 clear all,close all,clc,clf;x1n=[ones(1,4)]; %产生序列向量x1(n)=R4(n)M=8;xa=1:(M/2);xb=(M/2):-1:1;x2n=[xa,xb]; %产生长度为8的三角波序列x2(n) x3n=[xb,xa];%产生长度为8的序列x3(n)X1k8=fft(x1n,8); %计算x1n 的8点DFT X1k16=fft(x1n,16); %计算x1n 的16点DFT X2k8=fft(x2n,8); %计算x2n 的8点DFT X2k16=fft(x2n,16); %计算x2n 的16点DFT X3k8=fft(x3n,8); %计算x3n 的8点DFT X3k16=fft(x3n,16); %计算x3n 的16点DFTXk=fft(x1n,1024); %1024点FFT[x(n)], 用于近似序列x(n)的TF k=0:1023;wk=k/1024; %0-2π周期内的归一化频率 subplot(3,1,1);plot(wk,abs(Xk));%画FT[x1(n)]aaxis([0,1,0,1.1*max(Xk)]);set(gca,'Xtick',[0,0.25,0.5,0.75,1]); title('(a) 原序列的频谱FT[x_1(n)]');ylabel('|X(e^j^\omega)|');%xlabel('f=\omega/2\pi'); nX1k8=0:7;nX1k16=0:15;subplot(3,1,2);stem(nX1k8,abs(X1k8),'.'); %绘制8点DFT 的幅频特性图 axis([0,8,0,1.1*max(X1k8)]);title('(b) 8点DFT[x_1(n)]');ylabel('幅度');%xlabel('n');subplot(3,1,3); stem(nX1k16,abs(X1k16),'.'); %绘制16点DFT 的幅频特性图 axis([0,16,0,1.1*max(X1k16)]);title('(c) 16点DFT[x_1(n)]');ylabel('幅度');%xlabel('n'); figure(2)Xk=fft(x2n,1024); %1024点FFT[x(n)], 用于近似序列x(n)的TFk=0:1023;wk=k/1024; %0-2π周期内的归一化频率 subplot(3,1,1);plot(wk,abs(Xk));%画FT[x2(n)]axis([0,1,0,1.1*max(Xk)]);set(gca,'Xtick',[0,0.25,0.5,0.75,1]); title('(a) 原序列的频谱FT[x_2(n)]');ylabel('|X(e^j^\omega)|');%xlabel('f=\omega/2\pi'); nX2k8=0:7;nX2k16=0:15;subplot(3,1,2);stem(nX2k8,abs(X2k8),'.'); %绘制8点DFT 的幅频特性图 axis([0,8,0,1.1*max(X2k8)]);title('(b) 8点DFT[x_2(n)]');ylabel('幅度');%xlabel('n');subplot(3,1,3); stem(nX2k16,abs(X2k16),'.'); %绘制16点DFT 的幅频特性图 axis([0,16,0,1.1*max(X2k16)]);title('(c) 16点DFT[x_2(n)]');ylabel('幅度');%xlabel('n'); figure(3)Xk=fft(x3n,1024); %1024点FFT[x(n)], 用于近似序列x(n)的TF k=0:1023;wk=k/1024; %0-2π周期内的归一化频率 subplot(3,1,1);plot(wk,abs(Xk));%画FT[x3(n)]axis([0,1,0,1.1*max(Xk)]);set(gca,'Xtick',[0,0.25,0.5,0.75,1]); title('(a) 原序列的频谱FT[x_3(n)]');ylabel('|X(e^j^\omega)|');%xlabel('f=\omega/2\pi'); nX3k8=0:7;nX3k16=0:15;subplot(3,1,2);stem(nX3k8,abs(X3k8),'.'); %绘制8点DFT 的幅频特性图 axis([0,8,0,1.1*max(X3k8)]);title('(b) 8点DFT[x_3(n)]');ylabel('幅度');%xlabel('n');subplot(3,1,3); stem(nX3k16,abs(X3k16),'.'); %绘制16点DFT 的幅频特性图 axis([0,16,0,1.1*max(X3k16)]);title('(c) 16点DFT[x_3(n)]');ylabel('幅度');%xlabel('n');程序运行结果:0.250.50.751(a) 原序列的频谱FT[x 1(n)]|X (e j )|(b) 8点DFT[x 1(n)]幅度(c) 16点DFT[x 1(n)]幅度图3-1 非周期序列1()x n 的频谱及8点、16点DFT0.250.50.751(a) 原序列的频谱FT[x 2(n)]|X (e j ω)|(b) 8点DFT[x 2(n)]幅度(c) 16点DFT[x 2(n)]幅度图3-2 非周期序列2()x n 的频谱及8点、16点DFT0.250.50.75101020(a) 原序列的频谱FT[x 3(n)]|X (ej ω)|(b) 8点DFT[x 3(n)]幅度(c) 16点DFT[x 3(n)]幅度图3-3 非周期序列3()x n 的频谱及8点、16点DFT程序运行结果说明:(1)非周期离散序列的8点DFT 和16点DFT 分别是原序列频谱函数的8点和16点采样。

实验三用FFT对信号进行频谱分析和MATLAB程序

实验三用FFT对信号进行频谱分析和MATLAB程序

实验三用FFT对信号进行频谱分析和MATLAB程序实验三中使用FFT对信号进行频谱分析的目的是通过将时域信号转换为频域信号,来获取信号的频谱信息。

MATLAB提供了方便易用的函数来实现FFT。

首先,我们需要了解FFT的原理。

FFT(快速傅里叶变换)是一种快速计算离散傅里叶变换(DFT)的算法,用于将离散的时间域信号转换为连续的频域信号。

FFT算法的主要思想是将问题划分为多个规模较小的子问题,并利用DFT的对称性质进行递归计算。

FFT算法能够帮助我们高效地进行频谱分析。

下面是一个使用MATLAB进行频谱分析的示例程序:```matlab%生成一个10秒钟的正弦波信号,频率为1Hz,采样率为100Hzfs = 100; % 采样率t = 0:1/fs:10-1/fs; % 时间范围f=1;%正弦波频率x = sin(2*pi*f*t);%进行FFT计算N = length(x); % 信号长度X = fft(x); % FFT计算magX = abs(X)/N; % 幅值谱frequencies = (0:N-1)*(fs/N); % 频率范围%绘制频谱图figure;plot(frequencies, magX);xlabel('频率(Hz)');ylabel('振幅');title('信号频谱');```上述代码生成了一个10秒钟的正弦波信号,频率为1 Hz,采样率为100 Hz。

通过调用MATLAB的fft函数计算信号的FFT,然后计算每个频率分量的幅值谱,并绘制出信号频谱图。

在频谱图中,横轴表示频率,纵轴表示振幅。

该实验需要注意以下几点:1.信号的采样率要与信号中最高频率成一定比例,以避免采样率不足导致的伪频谱。

2.FFT计算结果是一个复数数组,我们一般只关注其幅值谱。

3.频率范围是0到采样率之间的频率。

实验三的报告可以包含以下内容:1.实验目的和背景介绍。

实验三FFT算法的应用

实验三FFT算法的应用

实验三FFT算法的应用一、实验目的1.2.3.通过实验加深对快速傅立叶变换(FFT)基本原理的理解。

掌握FFT 的用于信号的谱分析;掌握利用FFT计算卷积。

二、实验仪器设备PC机MATLAB软件三、实验原理对N点序列某(n),其DFT变换对定义为:N1nk某(k)某(n)WNn0N11nk某(n)某(k)WNNk0k0,1,...,N1,WNn0,1,...,N1ej2/N显然,求出N点某(k)需要N次复数乘法,N(N-1)次复数加法。

众所周知,实现一次复数乘需要四次实数乘和两次实数加,实现一次复数加则需要两次实数加。

当N很大时,其计算量是相当可观的。

例如,若N=1024,则需要1,048,576次复数乘法,即4,194,304次实数乘法。

所需时间过长,难于“实时”实现。

若是处理二维或三维图像,所需的计算量更是大得惊人。

FFT是DFT的一种快速算法。

FFT算法将长序列的DFT分解为短序列的DFT。

N点的DFT先分解为2个N/2点的DFT,每个N/2点的DFT又分解为2个N/4点的DFT。

按照此规律,最小变换的点数即所谓的“基数(radi某)”。

因此,基数为2的FFT算法的最小变换(或称蝶形)是2点DFT。

一般地,对N点FFT,对应于N个输入样值,有N个频域样值与之对应。

时析型FFT是将序列逐次奇偶对分,奇数号排成一子序列,偶数号排成一子序列,各子序列的长度为N/2,用同样的方法再将两个子序列又分成长度为N/4的4个子序列,依次这样分下去,最后的子序列长度为1,即一个数,而一个数的DFT就是本身。

然后找出子序列的DFT与原序列DFT的关系,就可以合成原序列的DFT。

1)FFT的实现:计算矢量或矩阵的FFT:格式y=fft(某)y=fft (某,n)。

其中y=fft(某)是利用FFT算法计算矢量某的离散傅立叶变换,若某为矩阵,则y是对矩阵的每一列向量进行FFT;当某的长度是2的整数次幂时,则fft函数采用基2时析型FFT,否则采用混合基算法。

实验三 用FFT作谱分析

实验三 用FFT作谱分析

实验三 用FFT 作谱分析1、实验目的(1)进一步加深DFT 算法原理和基本性质的理解(因为FFT 只是DFT 的一种快速算法,所以FFT 的运算结果必然满足DFT 的性质)(2)熟悉FFT 算法原理及子程序的应用。

(3)掌握用FFT 对连续信号和时域离散信号进行频谱分析的基本方法。

了解可能出现的分析误差和原因,以便在实际中正确应用FFT 。

2、实验原理如果用FFT 对模拟信号进行谱分析,首先要把模拟信号转换成数字信号,转换时要求知道模拟信号的最高截止频率,以便选择满足采样定理的采样频率。

一般选择采样频率是模拟信号中最高频率的3~4倍。

另外要选择对模拟信号的观测时间,如果采样频率和观测时间确定,则采样点数也确定了。

这里观测时间和对模拟信号进行谱分析的分辨率有关,最小的观测时间和分辨率成倒数关系。

要求选择的采样点数和观测时间大于它的最小值。

用FFT 作谱分析时,要求做FFT 的点数服从2的整数幂,这一点在上面选择采样点数时可以考虑满足,即使满足不了,可以通过在序列尾部加0完成。

如果要进行谱分析的模拟信号是周期信号,最好选择观测时间是信号周期的整数倍。

如果不知道信号的周期,要尽量选择观测时间长一些,以减少截断效应的影响。

用FFT 对模拟信号作谱分析是一种近似的谱分析。

首先一般模拟信号(除周期信号外)的频谱是连续频谱,而用FFT 作谱分析得到的是数字谱,因此应该取FFT 的点数多一些,用它的包络作为模拟信号的近似谱。

另外,如果模拟信号不是严格的带限信号,会因为频谱混叠现象引起谱分析的误差,这种情况下可以预先将模拟信号进行预滤,或者尽量将采样频率取高一些。

一般频率混叠发生在折叠频率附近,分析时要注意因频率混叠引起的误差。

最后要注意一般模拟信号是无限长的,分析时要截断,截断的长度和分辨率有关,但也要尽量取长一些,取得太短因截断引起的误差会很大。

举一个极端的例子,一个周期性正弦波,如果所取观察时间太短,例如取小于一个周期,它的波形和正弦波相差太大,肯定误差很大,但如果取得长一些,即使不是周期的整倍数,这种截断效应也会小一些。

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 算法本身的近似处理。

实验三 FFT频谱分析及应用

实验三 FFT频谱分析及应用

实验三FFT频谱分析及应用一、实验目的1.通过实验加深对FFT的理解;2.熟悉应用FFT对典型信号进行频谱分析的方法。

二、实验内容使用MA TLAB程序实现信号频域特性的分析。

涉及到离散傅立叶变换(DFT)、快速傅立叶变换(FFT)及信号频率分辨率等知识点。

三、实验原理与方法和手段在各种信号序列中,有限长序列占重要地位。

对有限长序列可以利用离散傅立叶变换(DFT)进行分析。

DFT不但可以很好的反映序列的频谱特性,而且易于用快速算法(FFT)在计算机上进行分析。

有限长序列的DFT是其z变换在单位圆上的等距离采样,或者说是序列傅立叶的等距离采样,因此可以用于序列的谱分析。

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

在MA TLAB信号处理工具箱中的函数fft(x,N),可以用来实现序列的N点快速傅立叶变换。

经函数fft求得的序列一般是复序列,通常要求出其幅值和相位。

MATLAB中提供了求复数的幅值和相位的函数:abs、angle,这些函数一般和fft同时使用。

四、实验条件1.具有WINDOWS 98/2000/NT/XP操作系统的计算机一台;2.。

MATLAB编程软件。

五、实验步骤在“开始--程序”菜单中,找到MATLAB程序,运行启动;进入MATLAB后,在Command Window中输入实验程序,并执行;记录运行结果图形,作分析。

具体步骤如下:1.用FFT 进行典型信号的频谱分析高斯序列:改变参数p、q,分析参数的变化对频谱的影响。

更改参数后发现当p 不变,q 更大时,函数输出曲线中间位于0的点更多。

2.模拟信号)8cos(5)4sin(2)(t t t x ππ+=,以)1:0(01.0-==N n n t 进行采样,求:(1)N =40点FFT 的幅度频谱,从图中能否观察出信号的2个频谱分量?(2)提高采样点数,如N =128,再求该信号的幅度频谱,此时幅度频谱发生了什么变化?信号的2个模拟频率和数字频率各为多少?FFT 频谱分析结果与理论上是否一致?更改为128后可以发现图像变得更加的顺滑具体,点更加密集由图可知,两个信号的仿真数字频率与理论相符。

数字信号处理实验3 FFT算法应用

数字信号处理实验3 FFT算法应用
与图 6-1 有相同的结论。 (2)用以下代码可得图 6-2 >> N=64; >> k=0:N-1; >> X=1./(1-0.8*exp(-j*2*pi*k/N)); >> x=ifft(X,64); >> n=k; >> stem(n,abs(x)) >> grid
图 6-2
>> xlabel('n');ylabel('x[n]');
图 6-1
理论分析如下:
由欧拉公式得: x[n] cos(2 7n) 1 cos(2 19n)
N
2N
1
(e
j 2 7n N
e
j 2 ( N 7n) N
1
e
j 2 19n N
1
e
j 2 ( N 19n)
N
)
2
2
2
j 2 kn
对 p[n] e N ,其 2N 点的 DFT 变换为:
2N 1
j 2mn 2N 1 j 2n(2km)
X (k) 。
(2) 已知某序列 x(n) 在单位圆上的 N=64 等分样点的 Z 变换为
X (zk
)
X
(k)
1 1 0.8e j2k / N
,k
0,1,2,...,63

_
_
用 N 点 IFFT 程序计算 x(n) IDFT[ X (k)],绘出和 x(n) 。
实验要求:利用 MATLAB 编程完成计算,绘出相应图形。并与理论计算相比较,说明实验结 果的原因。 (1) 用以下代码实现可得图 6-1 所示的 DFT 图。 >> N=64; >> n=0:2*N-1; >> x=cos(2*pi*7*n/N)+1/2*cos(2*pi*19*n/N); >> X=fft(x,128); >> k=n; >> stem(k,abs(X)) >> grid >> xlabel('k');ylabel('|X[k]|');

fft上机实验报告

fft上机实验报告

fft上机实验报告FFT上机实验报告引言:傅里叶变换(Fourier Transform)是一种重要的数学工具,可以将一个函数在时域中的表示转换为频域中的表示。

在信号处理、图像处理、通信等领域中,傅里叶变换被广泛应用。

本文将介绍在上机实验中所学习到的快速傅里叶变换(Fast Fourier Transform,FFT)算法及其应用。

一、实验目的本次上机实验的主要目的是通过实际操作,深入了解FFT算法的原理和应用。

具体目标包括:掌握FFT算法的基本思想和计算步骤;理解FFT算法的时间复杂度和空间复杂度;学会使用MATLAB等工具进行FFT算法的实现和应用。

二、实验过程1. 理论知识准备在进行FFT算法的实验之前,我们首先需要了解傅里叶变换的基本原理和FFT 算法的推导过程。

傅里叶变换可以将一个连续函数表示为一系列正弦和余弦函数的叠加,从而揭示了信号的频域特性。

而FFT算法则是一种高效计算离散傅里叶变换(Discrete Fourier Transform,DFT)的方法,可以大大减少计算复杂度。

2. 实验准备在实验开始之前,我们需要准备一些实验所需的工具和数据。

首先,我们需要安装MATLAB软件,并确保其正常运行。

其次,我们需要准备一些信号数据,可以是声音、图像等。

本次实验中,我们选择了一段音频作为实验数据。

3. 实验步骤(1)导入数据首先,我们需要将实验数据导入到MATLAB中。

通过使用MATLAB提供的读取音频文件的函数,我们可以将音频数据读取为一个向量。

(2)进行FFT计算接下来,我们可以使用MATLAB提供的fft函数对导入的音频数据进行FFT计算。

FFT函数将返回一个复数数组,表示输入信号在频域中的表示。

(3)频域分析得到频域表示后,我们可以对信号进行频域分析。

通过计算频谱、功率谱等参数,我们可以了解信号的频率分布、能量分布等特性。

此外,还可以进行滤波、降噪等操作,以实现对信号的处理和改变。

实验三用FFT频谱分析

实验三用FFT频谱分析

实验三用FFT频谱分析FFT(快速傅里叶变换)是一种常用的信号处理技术,可用于频谱分析。

频谱分析是分析信号中各频率成分的强度和相位的过程。

在本实验中,我们将使用FFT技术来进行频谱分析。

首先,我们需要了解一些基本概念。

任何信号都可以看作是不同频率的正弦波的叠加。

通过对信号进行傅里叶变换,我们可以将其表示为频率和幅度的函数,这就是频谱。

FFT是一种快速计算傅里叶变换的算法,大大提高了计算效率。

接下来,我们将使用Python的NumPy库来进行FFT频谱分析。

首先,我们需要导入NumPy库以及Matplotlib库用于绘图。

```pythonimport numpy as npimport matplotlib.pyplot as plt```然后,我们可以生成一个示例信号用于频谱分析。

在此实验中,我们将使用包含两个频率成分的正弦波。

```python#生成时间序列t = np.linspace(0, 1, 1000)#生成频率为10Hz和20Hz的信号f1=10f2=20signal = np.sin(2*np.pi*f1*t) + np.sin(2*np.pi*f2*t)```接下来,我们可以进行FFT频谱分析。

```python#对信号进行FFTfft = np.fft.fft(signal)#计算频率轴freqs = np.fft.fftfreq(len(signal))#绘制功率谱密度图plt.plot(freqs, np.abs(fft)**2)plt.xlabel('Frequency')plt.ylabel('Power')plt.show```这样就完成了FFT频谱分析。

我们可以通过查看功率谱密度图来了解信号的频率成分。

在图中,横轴表示频率,纵轴表示功率。

功率谱密度图可以帮助我们确定信号中存在的频率成分的强度。

在本实验中,我们使用了两个频率为10Hz和20Hz的正弦波信号进行了示例分析。

实验三 用FFT频谱分析

实验三 用FFT频谱分析

09电信A1班班级编号:15 姓名:巨李岗实验三用FFT频谱分析一、实验目的学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用FFT。

二、实验原理用FFT对信号作频谱分析是学习数字信号处理的重要内容。

经常需要警醒谱分析的信号时模拟信号和时域离散信号。

对信号进行谱分析的重要问题是频谱分辨率D和分析误差。

频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是2π/N,因此要求2π/N≤D。

可以根据此式FFT的变换区间N。

误差主要来自于用FFT做频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时,离散谱的包络才能逼近于连续谱,因此N要适当选择适当大一点。

周期信号的频谱是离散谱,只有用整数倍周期的长度做FFT,得到的离散谱才能代表周期信号的频谱。

如果不知道信号周期,可以尽量选择信号的观察周期长一些。

对模拟信号进行分析时,首先要按照采样定理将其变成时域离散信号。

如果是模拟周期信号,也应该选取整数周期的长度,经过采样之后形成的周期序列,按照周期序列的普分析进行。

三、实验步骤及内容(1)对一下序列进行谱分析:X1(n)=R4(n)n+1 0≤n≤3X2(n)= 8-n 4≤n≤70 其他n4-n 0≤n≤3X3(n)= n-3 4≤n≤7N 其他n选择FFT的变换区间N为8和16 两种情况进行频谱分析。

分别打印其幅频特性曲线,并进行对比、分析和讨论。

(1)程序如下:%DFT/IDFT程序DFT.mclcclearx1=[1 1 1 1 0 0 0 0];x2=[1 2 3 4 4 3 2 1];x3=[4 3 2 1 1 2 3 4];x1k8=fft(x1,8);x2k8=fft(x2,8);x3k8=fft(x3,8);x1k16=fft(x1,16);x2k16=fft(x2,16);x3k16=fft(x3,16);subplot(3,3,1);stem(x1);grid onsubplot(3,3,4);stem(x2);grid on subplot(3,3,7);stem(x3);grid on subplot(3,3,2);stem(abs(x1k8));grid on subplot(3,3,5);stem(abs(x2k8));grid on subplot(3,3,8);stem(abs(x3k8));grid on subplot(3,3,3);stem(abs(x1k16));grid on subplot(3,3,6);stem(abs(x2k16));grid on subplot(3,3,9);stem(abs(x3k16));grid on(2)对一下周期序列进行谱分析:X4(n) = n 4cosπ X5(n) = n 4cos π+n 8cos π选择FFT 的变换区间N 为8和16两种情况分别对以上序列进行频谱分析。

实验3_FFT算法应用

实验3_FFT算法应用

实验3_FFT算法应用FFT(快速傅里叶变换)算法是一种高效的计算傅里叶变换的方法,它可将一维或二维的离散傅里叶变换(DFT)问题的时间复杂度从O(n^2)降低到O(nlogn)。

由于其高效性和广泛的应用,FFT算法在信号处理、图像处理、数据压缩、模式识别等领域得到广泛应用。

FFT算法的应用之一是信号处理。

信号处理是指对信号进行采样、滤波、频谱分析和重构等处理。

其中,频谱分析是对信号的频谱特性进行分析和提取的过程,傅里叶变换在频谱分析中扮演重要角色。

FFT算法能够快速计算信号的频谱,提高频率分析的效率,常用于音频信号处理、图像处理、通信系统等领域。

在图像处理中,FFT算法常被用于图像增强、图像滤波和图像压缩等方面。

在图像增强中,FFT算法可以通过对图像进行傅里叶变换,对图像的频域信息进行操作,实现图像的锐化、平滑和细节增强等效果。

在图像滤波中,FFT算法可用于对图像进行频域滤波,实现去噪、边缘检测和纹理分析等任务。

在图像压缩中,FFT算法常用于图像压缩编码中的变换过程,通过对图像的频域信息进行编码,减小图像文件的大小。

另一个重要的应用领域是数据压缩和信号压缩。

FFT算法常用于无损和有损压缩算法中的变换过程。

对于无损压缩算法,如无损图像压缩算法,FFT算法可以将图像信号转换为频域信号,通过对频域信号进行编码和解码,实现对图像的无损压缩。

对于有损压缩算法,如JPEG图像压缩算法,FFT算法在变换和量化过程中起到重要作用,通过对图像的频域信息进行编码和量化,实现图像的有损压缩。

总之,FFT算法作为一种高效的计算傅里叶变换的方法,在信号处理、图像处理、数据压缩和模式识别等领域有着广泛应用。

通过FFT算法,可以快速计算信号的频谱,提高频率分析和频域处理的效率。

因此,掌握和应用FFT算法对于这些领域的研究和应用具有重要意义。

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对信号作频谱分析_实验报告

实验三用FFT对信号作频谱分析_实验报告

实验三用FFT对信号作频谱分析_实验报告一、实验目的1.学习使用FFT(快速傅里叶变换)对信号进行频谱分析;2.掌握频谱分析的基本原理和方法;3.熟悉使用MATLAB进行频谱分析的操作。

二、实验原理FFT是一种基于傅里叶变换的算法,可以将时域信号转换为频域信号,并将信号的频谱特征展示出来。

在频谱分析中,我们通过分析信号的频谱可以获得信号的频率、幅值等信息,从而对信号的性质和特征进行研究。

对于一个连续信号,我们可以通过采样的方式将其转换为离散信号,再利用FFT算法对离散信号进行频谱分析。

FFT算法可以将信号从时域转换到频域,得到离散的频谱,其中包含了信号的频率分量以及对应的幅值。

MATLAB中提供了fft函数,可以方便地对信号进行FFT分析。

通过对信号进行FFT操作,可以得到信号的频谱图,并从中提取出感兴趣的频率信息。

三、实验步骤1.准备工作:(2)建立新的MATLAB脚本文件。

2.生成信号:在脚本中,我们可以通过定义一个信号的频率、幅值和时间长度来生成一个信号的波形。

例如,我们可以生成一个频率为1000Hz,幅值为1的正弦波信号,并设置信号的时间长度为1秒。

3.对信号进行FFT分析:调用MATLAB中的fft函数,对信号进行FFT分析。

通过设置采样频率和FFT长度,可以得到信号的频谱。

其中,采样频率是指在单位时间内连续采样的次数,FFT长度是指离散信号的样本点数。

4.绘制频谱图:调用MATLAB中的plot函数,并设置x轴为频率,y轴为幅值,可以绘制出信号的频谱图。

频谱图上横坐标表示信号的频率,纵坐标表示信号的幅值,通过观察可以得到信号的频率分布情况。

四、实验结果在实验过程中,我们生成了一个频率为1000Hz,幅值为1的正弦波信号,并对其进行FFT分析。

通过绘制频谱图,我们发现信号在1000Hz处有最大幅值,说明信号主要由这一频率成分组成。

五、实验总结本实验通过使用FFT对信号进行频谱分析,我们可以方便地从信号的波形中提取出频率分量的信息,并绘制出频谱图进行观察。

fft实验报告

fft实验报告

fft实验报告傅里叶变换(Fast Fourier Transform, FFT)是一种重要的数学工具,广泛应用于信号处理、图像处理、通信系统等领域。

本文将从理论和实验两个方面,介绍FFT的原理、应用以及实验结果。

一、FFT的原理FFT是一种将时域信号转换为频域信号的算法,它基于傅里叶级数展开的思想。

傅里叶级数展开可以将一个周期信号表示为一系列正弦和余弦函数的叠加,而FFT则能够将非周期信号分解成一系列频率成分。

FFT的核心思想是将一个N点的离散信号变换为N/2个频率分量,其中前一半为正频率分量,后一半为负频率分量。

通过分别计算正频率和负频率的离散傅里叶变换(DFT),再利用对称性质进行合并,最终得到频域信号。

二、FFT的应用1. 信号处理:FFT在信号处理中有广泛应用,例如音频信号的频谱分析、滤波、降噪等。

通过将信号转换到频域,可以方便地分析信号的频率成分,从而实现各种信号处理算法。

2. 图像处理:FFT在图像处理中也有重要应用。

通过对图像进行二维FFT变换,可以将图像转换为频域表示,从而实现图像增强、去噪、压缩等操作。

例如,图像的频域滤波可以有效地去除图像中的噪声,提高图像的质量。

3. 通信系统:FFT在通信系统中也扮演着重要角色。

例如,在OFDM(正交频分复用)系统中,FFT用于将多个子载波的频域信号转换为时域信号进行传输。

这种技术能够提高信号的传输效率和抗干扰能力。

三、FFT实验结果为了验证FFT算法的正确性和效果,我们进行了一系列实验。

首先,我们使用MATLAB编程实现了FFT算法,并将其应用于音频信号处理。

通过对一段音频信号进行FFT变换,我们成功地获得了该信号的频谱图,并观察到不同频率成分的存在。

接下来,我们将FFT算法应用于图像处理。

我们选择了一张包含噪声的图像,并对其进行FFT变换。

通过对频域图像进行滤波操作,我们成功去除了图像中的噪声,并获得了清晰的图像。

最后,我们将FFT算法应用于通信系统中的OFDM技术。

实验三用FFT对信号作频谱分析_实验报告

实验三用FFT对信号作频谱分析_实验报告

实验三用FFT对信号作频谱分析_实验报告一、实验目的1.理解离散傅里叶变换(FFT)的原理和应用;2.学会使用FFT对信号进行频谱分析;3.掌握频谱分析的基本方法和实验操作。

二、实验原理离散傅里叶变换(FFT)是一种用来将时域信号转换为频域信号的数学工具。

其基本原理是将连续时间信号进行离散化,然后通过对离散信号进行傅里叶变换得到离散频域信号。

傅里叶变换(Fourier Transform)是一种将时域信号转换为频域信号的方法。

在信号处理中,经常需要对信号的频谱进行分析,以获取信号的频率分量信息。

傅里叶变换提供了一种数学方法,可以将时域信号转换为频域信号,实现频谱分析。

在频谱分析中,我们常常使用快速傅里叶变换(Fast Fourier Transform,FFT)算法进行离散信号的频谱计算。

FFT算法可以高效地计算出离散信号的频谱,由于计算复杂度低,广泛应用于信号处理和频谱分析的领域。

频谱分析的流程一般如下:1.采集或生成待分析的信号;2.对信号进行采样;3.对采样得到的信号进行窗函数处理,以改善频谱的分辨率和抑制信号泄漏;4.使用FFT算法对窗函数处理得到的信号进行傅里叶变换;5.对傅里叶变换得到的频谱进行幅度谱和相位谱分析;6.对频谱进行解释和分析。

三、实验内容实验所需材料和软件及设备:1.信号发生器或任意波形发生器;2.数字示波器;3.计算机。

实验步骤:1.连接信号发生器(或任意波形发生器)和示波器,通过信号发生器发送一个稳定的正弦波信号;2.调节信号频率、幅度和偏置,得到不同的信号;3.使用数字示波器对信号进行采样,得到离散时间信号;4.对采样得到的信号进行窗函数处理;5.对窗函数处理得到的信号进行FFT计算,得到频谱;6.使用软件将频谱进行幅度谱和相位谱的分析和显示。

四、实验结果与分析1.信号频谱分析结果如下图所示:(插入实验结果图)从频谱图中可以看出,信号主要集中在一些频率上,其他频率基本没有,表明信号主要由该频率成分组成。

FFT算法的应用

FFT算法的应用

实验3 FFT算法的应用一、实验目的1、加深对离散信号的DFT的理解;2、在MATLAB中实现FFT算法。

二、实验原理N点序列的DFT和IDFT变换定义式如下:,,利用旋转因子具有周期性,可以得到快速算法(FFT)。

在MATLAB中,可以用函数x=fft(x,N)和x=ifft(x,N)计算N点序列的DFT正、反变换。

三、预习要求1、在MATLAB中,熟悉函数fft、ifft的使用;2、阅读扩展练习中的实例,学习在MATLAB中的实现FFT算法的实现;3、利用MATLAB编程完成计算,绘出相应图形。

并与理论计算相比较,说明实验结果的原因。

四、实验内容1、2N点实数序列N=64。

用一个64点的复数FFT程序,一次算出,并绘出的图形。

(按照基于2的蝶型结构的递推公式编程)2、已知某序列在单位圆上的N=64等分样点的Z变换为:。

用N点IFFT程序计算出和。

五、范例例1:对连续的单一频率周期信号按采样频率采样,截取长度N分别选N =20和N =16,观察其DFT结果的幅度谱。

解:此时离散序列,即k=8。

用MATLAB计算并作图,函数fft用于计算离散傅里叶变换DFT,程序如下:k=8;n1=[0:1:19];xa1=sin(2*pi*n1/k);subplot(2,2,1)plot(n1,xa1)xlabel('t/T');ylabel('x(n)');xk1=fft(xa1);xk1=abs(xk1);subplot(2,2,2)stem(n1,xk1)xlabel('k');ylabel('X(k)');n2=[0:1:15];xa2=sin(2*pi*n2/k);subplot(2,2,3)plot(n2,xa2)xlabel('t/T');ylabel('x(n)');xk2=fft(xa2);xk2=abs(xk2);subplot(2,2,4)stem(n2,xk2)xlabel('k');ylabel('X(k)');图1 不同的截取长度的正弦信号及其DFT结果计算结果示于图1,(a)和(b)分别是N=20时的截取信号和DFT结果,由于截取了两个半周期,频谱出现泄漏;(c) 和(d) 分别是N=16时的截取信号和DFT结果,由于截取了两个整周期,得到单一谱线的频谱。

实验三FFT频谱分析及应用

实验三FFT频谱分析及应用

实验三FFT频谱分析及应用
FFT(快速傅里叶变换)是一种常见的频谱分析方法。

它可以将时域信号转换为频域信号,从而分析信号的频谱特征。

在实际应用中,FFT频谱分析被广泛应用于音频处理、图像处理、通信系统等领域。

首先,FFT频谱分析的原理是基于傅里叶变换的。

傅里叶变换是一种信号分析方法,其将时域信号转换为频域信号,通过分析信号在不同频率上的变化,可以了解信号的频率特征。

对于一个离散时间信号x[n],FFT可以将其转换为离散频域信号
X[k],其中k表示频域上的频率。

FFT算法使用快速算法,能够在时间复杂度为O(NlogN)的情况下完成计算,因此被广泛应用。

在实验中,我们将使用Python中的Scipy库来进行FFT频谱分析。

首先需要导入Scipy库中的fftpack模块,然后使用fftpack.fft函数进行FFT计算。

具体步骤如下:
1.准备一个时域信号,可以是从音频文件中读取的音频数据,也可以是自己生成的信号。

2. 将时域信号转换为频域信号,使用fftpack.fft函数进行快速傅里叶变换,得到频域信号的幅度谱和相位谱。

3.根据频域信号的幅度谱,可以将其绘制成频谱图,以了解信号在不同频率上的强度分布情况。

4.可以对频域信号进行滤波处理,通过去除不感兴趣的频率成分,保留感兴趣的频率成分,从而实现信号的频谱修复、降噪等应用。

5.将频域信号进行逆傅里叶变换,得到修复后的时域信号。

总之,FFT频谱分析是一种重要的信号分析方法,在科学研究和工程应用中都具有广泛的应用前景。

通过对信号的频率特征进行分析,可以提取有用的信息,实现信号处理和信号重构等功能。

实验三FFT及其应用

实验三FFT及其应用

实验三FFT及其应用一、实验目的(1)加深对FFT的理解,熟悉matlab中的有关函数。

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

(3)了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT. (4)应用FFT实现序列的线性卷积和相关。

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

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

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

泄漏不能与混叠完全分开,因为泄漏导致频谱的扩展,从而造成混叠。

为了减少泄漏的影响,可以选择适当的窗函数使频谱的扩散减至最小。

(3) 栅栏效应DFT是对单位圆上Z变换的均匀采样,所以它不可能将频谱视为一个连续函数,就一定意义上看,用DFT来观察频谱就好像通过一个栅栏来观看一个图景一样,只能在离散点上看到真实的频谱,这样就有可能发生一些频谱的峰点或谷点被“尖桩的栅栏”所拦住,不能别我们观察到。

减小栅栏效应的一个方法就是借助于在原序列的末端填补一些零值,从而变动DFT的点数,这一方法实际上是人为地改变了对真实频谱采样的点数和位置,相当于搬动了每一根“尖桩栅栏”的位置,从而使得频谱的峰点或谷点暴露出来。

用FFT计算线性卷积:用FFT可以实现两个序列的圆周卷积。

在一定的条件下,可以使圆周卷积等于线性卷积。

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

实验3 FFT 算法的应用
一、 实验目的
(1) 加深对离散信号的DFT 的理解;
(2) 在MATLAB 中实现FFT 算法。

二、 实验原理
N 点序列的DFT 和IDFT 变换定义式如下:
10[][]N kn N n X k x n W
-==∑, 101[][]N kn N k x n X k W N
--==∑ 利用旋转因子2j nk kn N N W e π-=具有周期性,可以得到快速算法(FFT )。

在MATLAB 中,可以用函数X=fft (x ,N )和x=ifft (X ,N )计算N 点序列的DFT 正、反变换。

三、 预习要求
(1) 在MATLAB 中,熟悉函数fft 、ifft 的使用;
(2) 阅读附录中的实例,学习在MATLAB 中的实现FFT 算法的实现;
(3) 利用MATLAB 编程完成计算,绘出相应图形。

实验内容
(1) N 点实数序列
⎪⎭
⎪⎬⎫⎪⎩⎪⎨⎧-=+=n N n n N n N n x 其它,01,...,2,1,0),192cos(21)72cos()(ππ N=64。

用一个64点的复数FFT 程序,一次算出N n x DFT k X )]([)(=,并绘出)(k X 。

(2)已知某序列)(n x 在单位圆上的N=64等分样点的Z 变换为
63,...,2,1,0,8.011)()(/2=-=
=-k e k X z X N k j k π。

用N 点IFFT 程序计算
)]([)(_k X IDFT n x =,绘出和)(_n x 。

附录:
例1 对连续的单一频率周期信号 按采样频率 采样,截取长度N 分别选N =20和N =16,观察其DFT 结果的幅度谱。

解 此时离散序列 ,即k=8。

用MATLAB 计算并作图,函数fft 用于计算离散傅里叶变换DFT ,程序如下:
k=8;
n1=[0:1:19];
xa1=sin(2*pi*n1/k);
subplot(2,2,1)
plot(n1,xa1)
xlabel('t/T');ylabel('x(n)');
xk1=fft(xa1);xk1=abs(xk1);
subplot(2,2,2)
stem(n1,xk1)
xlabel('k');ylabel('X(k)');
n2=[0:1:15];
xa2=sin(2*pi*n2/k);
subplot(2,2,3)
plot(n2,xa2)
xlabel('t/T');ylabel('x(n)');
xk2=fft(xa2);xk2=abs(xk2);
subplot(2,2,4)
stem(n2,xk2)
xlabel('k');ylabel('X(k)');。

相关文档
最新文档