数字信号处理实验三--用FFT

数字信号处理实验三--用FFT作谱分析XXXX 大学实验报告XXXX 年 XX 月 XX 日课程名称: 数字信号处理 实验名称:用FFT 作谱分析班级: XXXXXXXX 班 学号: XXXXXXXX 姓名: XXXX实验三 用FFT 作谱分析一、 实验目的(1) 进一步加深DFT 算法原理和基本性质的理解(因为FFT 只是DFT 的一种快速算法,所以FFT 的运算结果必然满足DFT 的基本性质); (2) 熟悉FFT 算法的原理;(3) 学习用FFT 对连续信号和时域离散信号进行谱分析的方法分析误差及其原因,以便在实际中正确应用FFT 。

二、 实验内容(1)x(n)={1 0≤n ≤50 其他构造DFT 函数计算x(n)的10点DFT ,20点DFT并画出图形;(2)利用FFT 对下列信号逐个进行谱分析并画出图形 a 、x 1(n)=R 4(n); b 、x 2(n)=cos π4n ; c 、x 3(n)=sin π8n以上3个序列的FFT 变换区间N=8,16(2)设一序列中含有两种频率成份,f1=2HZ,f2=2.05HZ,采样频率取为fs =10HZ ,即 )/2sin()/2sin()(21ssf n f f n f n x ππ+=要区分出这两种频率成份,必须满足N>400,为什么?a.取x(n)(0≤n<128)时,计算x(n)的DFT X(k)b.将a 中的x (n )以补零方式使其加长到0≤n<512,计算X(k)c.取x(n)( 0≤n<512),计算X(k)(3)令)()()(32n x n x n x +=用FFT 计算16点离散傅立叶变换并画出图形,分析DFT 的对称性 (4))()()(32n jx n x n x +=用FFT 计算16点离散傅立叶变换并画出图形,分析DFT 的对称性 三、 实验代码 (1)1、 代码function [Xk]=dft(xn,N)n=[0:1:N-1];k=[0:1:N-1]; WN=exp(-j*2*pi/N); nk=n'*k; WNnk=WN.^nk;Xk=xn*WNnk; %离散傅立叶变换方法定义N=10; %10点DFT n1=[0:N-1];x1=[ones(1,6),zeros(1,N-6)]; %生成1行6列的单位矩阵和1行N-6列的0矩阵Xk1=dft(x1,N); %10点DFT figure(1);subplot(2,1,1);stem(n1,x1); %画火柴图xlabel(‘n’);ylabel(‘x(n)’);subplot(2,1,2);stem(n1,abs(Xk1));xlabel(‘n’);ylabel(‘x(n)’);N=20;n2=[0:N-1];x2=[ones(1,6),zeros(1,14)];Xk2=dft(x2,N);figure(2);subplot(2,1,1);stem(n2,x2);xlabel(‘n’);ylabel(‘x(n)’);subplot(2,1,2);stem(n2,abs(Xk2));xlabel(‘n’);ylabel(‘x(n)’);2、运行结果图1 10点DFT图2 20点DFT3、结果分析定义x(n)的N 点DFT 为由定义知:DFT 具有隐含周期性,周期与DFT 的变换长度N 一致,这说明,变换长度不一样,DFT 的结果也不一样(2)1、代码10)()(10-≤≤=∑-=N k W n x k X N n nkNNjN eW π2-=其中N=64;n=[0:N-1];x1=[ones(1,4),zeros(1,N-4)];%定义x1(n)=R4(n)x2=cos((pi/4)*n); %定义nx2(n)=cosπ4x3=sin((pi/8)*n); %定义nx3(n)=sinπ8y1=fft(x1);y2=fft(x2);y3=fft(x3); %分别进行DFTfigure(1);m1=abs(y1);subplot(2,1,1); %绘制x1(n)的图形stem(n,x1);subplot(2,1,2); %绘制x1(n)的DFT图形stem(n,m1)figure(2);m2=abs(y2);subplot(2,1,1);stem(n,x2); %绘制x2(n)的图形subplot(2,1,2);stem(n,m2);%绘制x1(n)的DFT图形figure(3);m3=abs(y3);subplot(2,1,1);stem(n,x3); %绘制x3(n)的图形subplot(2,1,2);stem(n,m3); %绘制x1(n)的DFT图形2、运行结果图3 x1(n)的DFT前后图形图4 x2(n)的DFT 前后图形图 5 x3(n)的DFT前后图形3、结果分析由图可以看出,离散序列的DFT与对应连续函数的FT有对应关系,不同之处在于DFT的结果是离散的,而FT的结果是连续的,再者,DFT结果与DFT 的变换长度N有关。

(3)a、1、程序N=256;n=[0:N-1];x=sin(2*pi*2*n/10)+sin(2*pi*2.05*n/ 10); %定义xX=fft(x); %DFTfigure(1);subplot(2,1,1);stem(n,x); %绘制xsubplot(2,1,2);plot(n,abs(X)); %绘制DFT后的图形2、运行结果图6 长度为256的DFTb、1、程序N=128;n=[0:N-1];n1=[0:511];x=sin(2*pi*2*n/10)+sin(2*pi*2.05*n/10);x1=[x,zeros(1,384)]; %以补零方式将n加长到512X1=fft(x1);figure();subplot(2,1,1)stem(n1,x1); %绘制x subplot(2,1,2);plot(n1,abs(X1)) %绘制DFT后的图形2、运行结果图7 以补零方式加长到512的DFT C、1、程序N1=512;n2=[0:N1-1];x2=sin(2*pi*2*n2/10)+sin(2*pi*2.05*n2/10);%长度为512时变换X2=fft(x2);hold onfigure();subplot(2,1,1);stem(n2,x2); %绘制x subplot(2,1,2);plot(n2,abs(X2)); %绘制DFT后的图形2、运行结果图8 长度为512的DFT3、结果分析由三种情况下的DFT结果可知,要区分信号中的两个不同频率,需要有一定个数的N,也就是说,N要足够大才可以区分开两个频率;第一种N,N<400,因此DFT后二者频率未被区分开来;第二种N,N以补零的方式加长到512点,大于400,则可以将二者频率区分开来;第三种N,N>400,二者频率分开了;也就是说,区分不同频率从DFT的角度来讲只要加长N的长度,而不管是以补零方式加长还是其他方式加长。

(4)1、程序N=16;n=[0:N-1];x2=cos((pi/4)*n);x3=sin((pi/8)*n);x=x2+x3; %定义前述的序列x2(n)、x3(n)和x(n)y2=fft(x2);y3=fft(x3); y=fft(x); %对x2(n)、x3(n) 和x(n)进行傅立叶变换figure(1);m2=abs(y2);subplot(2,1,1);stem(n,x2); %绘制x2(n)的图形subplot(2,1,2);stem(n,m2) %绘制DFT后的x2(n)图形figure(2);m3=abs(y3);subplot(2,1,1);stem(n,x3); %绘制x3(n)的图形subplot(2,1,2);stem(n,m3); %绘制DFT后的x3(n)图形figure(3);m=abs(y);subplot(2,1,1);stem(n,x); %绘制x(n)的图形subplot(2,1,2);stem(n,m); %绘制DFT后的x(n)图形2、运行结果图9 x2(n)DFT前后的图形图10 x3(n)DFT前后的图形图11 x(n)DFT前后的图形3、结果分析a、x2(n)为实偶对称序列(余弦序列),也可以认为是共轭对称序列;b、x3(n)为实奇对称序列(正弦序列),也可以认为是共轭反对称序列;c、x(n)可以认为是一个分成了共轭对称和共轭反对称序列的实序列,则其DFT的实部对应x2(n),其虚部和j一起对应x3(n);以上就是DFT的共轭对称性的一部分。

(5)1、程序N=16;n=[0:N-1];x1=cos((pi/4)*n)+j*sin((pi/8)*n);y1=fft(x1);figure(1);m1=abs(y1);subplot(2,1,1);stem(n,x1); %绘制x1(n)的图形subplot(2,1,2);stem(n,m1); %绘制DFT后的x1(n)图形2、运行结果图12 x1(n)DFT 前后的图形3、结果分析 X1(n)可以认为是一个分成了实部和虚部的序列,则其DFT 的实部对应共轭对称序列,其虚部和j 一起对应共轭反对称序列。

就是DFT 的共轭对称性的另一部分。

四、 实验小结序列的傅立叶变换和Z 变换共同特点是:(1)适用于无限长序列;(2)变换的结果是连续函数,从计算的角度来看这是不利的。

对有限长序列可采用离散傅立叶变换(简称DFT ),它是可利用计算机进行数值计算的变换,并且存在快速算法,从而使信号的实时处理和设备的简化得以实现。

1、DFT 的定义设x(n)是一个长度为N 的有限长序列,定义x(n)的N 点DFT 为2、DFT 与Z 变换的关系DFT 的物理意义:序列x(n)的N 点DFT 是x(n)的Z 变换在单位圆上的N 点等间隔采样;X(k)为x(n)的傅立叶变换X(e jw )在区间[0,2π]上的N 点等间隔采样。

3、DFT 隐含周期性10)()(10-≤≤=∑-=N k W n x k X N n nk NNj N e W π2-=其中在DFT变换对中,x(n)和X(k)均为有限长序列,设nkNjnkNeWπ2-=,由于knNW的周期性,使得x(n)和X(k)隐含周期性,且周期为N。

此外,DFT的基本性质包括线性性质、循环移位性质、循环卷积定理、复共轭序列的DFT以及DFT的共轭对称性等。

合集下载

数字信号处理实验报告 3

数字信号处理实验报告 3

数字信号处理实验报告姓名:班级:通信学号:实验名称:频域抽样定理验证实验类型:验证试验指导教师:实习日期:2013.频域采样定理验证实验一. 实验目的:1. 加深对离散序列频域抽样定理的理解2.了解由频谱通过IFFT 计算连续时间信号的方法3.掌握用MATLAB 语言进行频域抽样与恢复时程序的编写方法 4、用MATLAB 语言将X(k)恢复为X(z)及X(e jw )。

二. 实验原理:1、1、频域采样定理: 如果序列x(n)的长度为M ,频域抽样点数为N ,则只有当频域采样点数N ≥M 时,才有x N (n)=IDFT[X(k)]=x(n),即可由频域采样X(k)无失真的恢复原序列 x(n)。

2、用X(k)表示X(z)的内插公式:∑-=-----=10111)(1)(N k kNNzWz k X Nz X内插函数: zWzkNNN z 1k111)(-----=ϕ频域内插公式:∑-=-=10)2()()(N K j k Nk X e X πωϕω频域内插函数:e N j N N )21()2sin()2sin(1)(--=ωωωωϕ三. 实验任务与步骤:实验一:长度为26的三角形序列x(n)如图(b)所示,编写MATLAB 程序验证频域抽样定理。

实验二:已知一个时间序列的频谱为X(e jw )=2+4e -jw +6e -j2w +4e -j3w +2e -j4w分别取频域抽样点数N为3、5和10,用IPPT计算并求出其时间序列x(n),用图形显示各时间序列。

由此讨论原时域信号不失真地由频域抽样恢复的条件。

实验三:由X32(k)恢复X(z)和X(e jw)。

四.实验结论与分析:实验一:源程序:M=26;N=32;n=0:M; %产生M长三角波序列x(n)xa=0:floor(M/2);xb= ceil(M/2)-1:-1:0; xn=[xa,xb];Xk=fft(xn,512); %1024点FFT[x(n)], 用于近似序列x(n)的TFX32k=fft(xn,32); %32点FFT[x(n)]x32n=ifft(X32k); %32点IFFT[X32(k)]得到x32(n)X16k=X32k(1:2:N); %隔点抽取X32k得到X16(K)x16n=ifft(X16k,N/2); %16点IFFT[X16(k)]得到x16(n)subplot(3,2,2);stem(n,xn,'.');box ontitle('(b) 三角波序列x(n)');xlabel('n');ylabel('x(n)');axis([0,32,0,20])k=0:511;wk=2*k/512;subplot(3,2,1);plot(wk,abs(Xk));title('(a)FT[x(n)]');xlabel('\omega/\pi');ylabel('|X(e^j^\omega)|');axis([0,1,0,200])k=0:N/2-1;subplot(3,2,3);stem(k,abs(X16k),'.');box ontitle('(c) 16点频域');xlabel('k');ylabel('|X_1_6(k)|');axis([0,8,0,200])n1=0:N/2-1;subplot(3,2,4);stem(n1,x16n,'.');box ontitle('(d) 16点IDFT[X_1_6(k)]');xlabel('n');ylabel('x_1_6(n)');axis([0,32,0,20])k=0:N-1;subplot(3,2,5);stem(k,abs(X32k),'.');box ontitle('(e) 32点频域采样');xlabel('k');ylabel('|X_3_2(k)|');axis([0,16,0,200])n1=0:N-1;subplot(3,2,6);stem(n1,x32n,'.');box ontitle('(f) 32点IDFT[X_3_2(k)]');xlabel('n');ylabel('x_3_2(n)');axis([0,32,0,20])结果如下所示:实验一分析:序列x(n)的长度M=26,由图中可以看出,当采样点数N=16<M时,x16(n)确实等于原三角序列x(n)以16为周期的周期延拓序列的主值序列。

数字信号处理 实验 信号处理中FFT的应用

数字信号处理 实验 信号处理中FFT的应用

数字信号处理实验报告实验名称: 信号处理中FFT 的应用 学号: 姓名:评语: 成绩:一、实验目的1、理解用FFT 对周期序列进行频谱分析时所面临的问题并掌握其解决方法。

2、掌握用时域窗函数加权处理的技术。

3、理解用FFT 对非周期信号进行频谱分析所面临的问题并掌握其解决方法。

二、实验原理与计算方法1、对周期序列进行频谱分析应注意的问题对时间序列作FFT 时,实际上要作周期延拓(如果取长序列的一段进行计算还要先作截断)。

周期序列是无限长时间序列,如果截断区间刚好就是该序列周期的整数倍,那么在进行周期延拓后,将还原出原来的周期序列,由此可以较精确地计算出的该周期序列的频谱。

反之,如果截断区间并不是该序列周期的整数倍,那么在进行周期延拓后,就不可能还原出原来的周期序列,由此计算出的频谱与该周期序列的频谱存在误差,而且误差的大小与截断区间的选取直接相关,如图4-1所示,其中幅度频谱的量值表示为)(log 20k X ,以dB(分贝)为单位。

这种误差是由于周期序列与矩形截断序列相乘在频域产生二者的频谱卷积形成的。

矩形窗的频谱是抽样函数序列fN j e f fN )1()sin()sin(--πππ,如图4-2所示。

除了k = 0处主瓣内集中了大部分的能量外,两旁的较小峰值处的旁瓣也分散了一部分能量,它与周期序列频谱卷积的结果使原来集中的频谱展宽,称为频率泄漏。

如果对已知周期的信号作频谱分析,在进行时域截断时,完全可以选取其周期的整数倍裁取,从而可以避免这种频率泄漏的发生。

不过,通常需要进行频谱分析的信号是周期未知的信号,或随机信号,无法判断它的周期值,为了尽量避免频率泄漏对结果的影响,在作时间截断时,就应选取其频谱的旁瓣较小的截断函数,以减轻泄漏问题。

2、时域窗函数的应用作为截断函数,矩形窗在作时间截断时,对所截取区间内的信号不加以任何影响,而其它的窗函数都将对所截取区间内的信号作加权处理。

除了在实验二中已经介绍过三角窗、Hanning 窗和Hamming 窗外,常用的窗函数还有很多,例如Parzen 窗、Kaiser 窗、Chebyshev )(k X )(k Xk k(a)时域周期整数倍截断 (b)时域非周期整数倍截断图 4-1 周期函数t Ωsin 的幅频曲线)(k Xk图 4-2 矩形窗的频谱窗、Tukey 窗、Poisson 窗、Caushy 窗、Gaussian 窗和Blackman 窗等等。

数字信号处理实验答案

数字信号处理实验答案

数字信号处理实验答案第十章上机实验数字信号处理是一门理论和实际密切结合的课程,为深入掌握课程内容,最好在学习理论的同时,做习题和上机实验。

上机实验不仅可以帮助读者深入的理解和消化基本理论,而且能锻炼初学者的独立解决问题的能力。

本章在第二版的基础上编写了六个实验,前五个实验属基础理论实验,第六个属应用综合实验。

实验一系统响应及系统稳定性。

实验二时域采样与频域采样。

实验三用FFT对信号作频谱分析。

实验四IIR数字滤波器设计及软件实现。

实验五FIR数字滤波器设计与软件实现实验六应用实验——数字信号处理在双音多频拨号系统中的应用任课教师根据教学进度,安排学生上机进行实验。

建议自学的读者在学习完第一章后作实验一;在学习完第三、四章后作实验二和实验三;实验四IIR数字滤波器设计及软件实现在。

学习完第六章进行;实验五在学习完第七章后进行。

实验六综合实验在学习完第七章或者再后些进行;实验六为综合实验,在学习完本课程后再进行。

10.1 实验一: 系统响应及系统稳定性1.实验目的(1)掌握求系统响应的方法。

(2)掌握时域离散系统的时域特性。

(3)分析、观察及检验系统的稳定性。

2.实验原理与方法在时域中,描写系统特性的方法是差分方程和单位脉冲响应,在频域可以用系统函数描述系统特性。

已知输入信号可以由差分方程、单位脉冲响应或系统函数求出系统对于该输入信号的响应,本实验仅在时域求解。

在计算机上适合用递推法求差分方程的解,最简单的方法是采用MA TLAB语言的工具箱函数filter函数。

也可以用MA TLAB语言的工具箱函数conv 函数计算输入信号和系统的单位脉冲响应的线性卷积,求出系统的响应。

系统的时域特性指的是系统的线性时不变性质、因果性和稳定性。

重点分析实验系统的稳定性,包括观察系统的暂态响应和稳定响应。

系统的稳定性是指对任意有界的输入信号,系统都能得到有界的系统响应。

或者系统的单位脉冲响应满足绝对可和的条件。

系统的稳定性由其差分方程的系数决定。

数字信号处理实验:基于FFT谱分析中的误差分析及处理

数字信号处理实验:基于FFT谱分析中的误差分析及处理

学生实验报告2020 —— 2021 学年第 1学期实验课程数字信号处理实验地点主教414学院电子信息工程学院专业通信工程学号姓名实验项目基于FFT谱分析中的误差分析及处理实验时间10.20 实验台号预习成绩报告成绩一、实验目的1.在理论学习的基础上,通过本次实验,加深对快速傅里叶变换的理解,熟悉FFT算法及其程序的编写2.熟悉应用FFT对典型信号进行频谱分析的方法。

3.了解应用FFT对非周期信号进行频谱分析所面临的问题并掌握其解决方法。

二、实验原理对非周期序列进行频谱分析应注意的问题1、混叠三、预习内容1.混叠,泄漏,栅栏效应的概念2.应用FFT对典型信号进行频谱分析的方法3.应用FFT对非周期信号进行频谱分析所面临的问题并掌握其解决方法4.傅里叶变换的相关性质四、实验内容(一)完成如下实验内容的学习和调试1. 对有限长序列进行谱分析(2)将上述有限长序列x(n)[1,2,3,2,1]末尾补零到N=1000点,使用FFT计算其频谱。

2. 对无限长序列进行谱分析用FFT进行无限长序列的频谱分析,首先要将无限长序列截断成一个有限长序列。

序列长度的取值对频谱有较大的影响,带来的问题是引起频谱的泄漏和波动。

已知一个无限长序列为, x(n)=0(n<0),采样频率Fs=20Hz,要求用FFT求其频谱。

3. 对模拟信号进行谱分析(一)用FFT计算下列连续时间信号的频谱,并观察选择不同的Ts和N值对频谱特性的影响。

(二)记录实验图形结果并结合基本原理,理解每一条语句的含义;(三)讨论有限长序列谱分析时增加分辨率的措施和方法;(四)谈论连续信号谱分析时不同时域采样频率及点数N不同时对频谱分析的影响;(五)对模拟信号进行谱分析,选择采样频率Fs=64Hz,变换区间长度N分别取8、32和64,用FFT分析其频谱。

记录结果并对比、分析和讨论。

五、实验步骤Fs=10;xn=[1,2,3,2,1];N=length(xn);D=2*pi*Fs/N;k=floor(-(N-1)/2:(N-1)/2);X=fftshift(fft(xn,N));subplot(1,2,1);plot(k*D,abs(X),'o:');title('幅度频谱');xlabel('rad/s');subplot(1,2,2);plot(k*D,angle(X),'o:');title('相位频谱');xlabel('rad/s');Fs=10;N=1000;xn=[1,2,3,2,1];Nx=length(xn);xn=[1,2,3,2,1,zeros(1,N-Nx-1)];D=2*pi*Fs/N;k=floor(-(N-1)/2:(N-1)/2);X=fftshift(fft(xn,N));subplot(1,2,1);plot(k*D,abs(X)); title('幅度频谱');xlabel('rad/s'); subplot(1,2,2);plot(k*D,angle(X)); title('相位频谱');xlabel('rad/s');Fs=20;C=[8,16,128];for r=0:2;N=C(r+1);n=0:N-1;xn=exp(-0.5*n);D=2*pi*Fs/N;k=floor(-(N-1)/2:(N-1)/2);X=fftshift(fft(xn,N));subplot(3,2,2*r+1); plot(k*D,abs(X));axis([-80,80,0,3]);subplot(3,2,2*r+2);stairs(k*D,angle(X));axis([-80,80,-1,1]);endT0=[0.5,0.25,0.125,0.125];N0=[256,256,2048,2048];for r=1:4;Ts=T0(r);N=N0(r);n=0:N-1;xn=exp(-0.5*n);D=2*pi/(N*Ts);xa=exp(-0.01*n*Ts).*(sin(2*n*Ts)+sin(2.1*n*Ts)+sin(2.2*n*Ts)); k=floor(-(N-1)/2:(N-1)/2);Xa=Ts*fftshift(fft(xa,N));[r,Xa(1)]subplot(2,2,r);plot(k*D,abs(Xa));axis([1,3,1.1*min(abs(Xa)),1.1*max(abs(Xa))]);end六、总结分析1.离散时间信号的FFT变换,其频谱是以抽样点数N为周期的周期延拓2.当N2为N1的整数倍时,以为抽样点数的抽样的图形就是在以为抽样点数的抽样图形的每两个点之间插入N2/N1个点的谱图形。

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

数字信号处理实验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实验傅里叶变换(Fast Fourier Transform,FFT)是一种将时间域信号转换为频域信号的算法。

它在信号处理、图像处理、通信等领域得到广泛应用。

本实验将介绍FFT的原理,并提供一个简单的FFT实现程序。

一、傅里叶变换原理傅里叶变换是一种将连续时间域信号转换为连续频域信号的变换。

对于一个具有周期T的连续信号f(t),它的傅里叶变换F(w)可以表示为:F(w) = ∫[0,T] f(t) * exp(-j*w*t) dt其中,j是虚数单位,w是频率。

傅里叶变换的结果是一个复数函数,包含信号的幅度和相位信息。

在数字信号处理中,我们使用离散傅里叶变换(Discrete Fourier Transform,DFT)代替连续傅里叶变换。

离散傅里叶变换可以将离散时间域信号转换为离散频域信号。

对于一个N点采样的离散信号x(n),它的离散傅里叶变换X(k)可以表示为:X(k) = ∑[0,N-1] x(n) * exp(-j*2π*k*n/N)傅里叶变换的计算复杂度为O(n^2),而FFT是一种改进的傅里叶变换算法,可以将计算复杂度降低到O(n*logn)。

FFT通过将N点DFT分解为多个较小规模的DFT计算来实现。

以下提供一个使用C语言实现的简单FFT程序:#include <stdio.h>#include <math.h>int reverseBits(int num, int bits)int reversed = 0;for (int i = 0; i < bits; i++)reversed = (reversed << 1) , (num & 1); num >>= 1;}return reversed;void fft(double x[], double y[], int n) int bits = log2(n);for (int i = 0; i < n; i++)int j = reverseBits(i, bits);if (j < i)double temp = x[i];x[i]=x[j];x[j] = temp;temp = y[i];y[i]=y[j];y[j] = temp;}}for (int k = 2; k <= n; k <<= 1)int half = k >> 1;double wn_r = cos(2 * PI / k);double wn_i = sin(2 * PI / k);for (int i = 0; i < n; i += k)double w_r = 1.0;double w_i = 0.0;for (int j = 0; j < half; j++)double u_r = x[i + j];double u_i = y[i + j];double v_r = x[i + j + half] * w_r - y[i + j + half] * w_i; double v_i = x[i + j + half] * w_i + y[i + j + half] * w_r; x[i+j]=u_r+v_r;y[i+j]=u_i+v_i;x[i + j + half] = u_r - v_r;y[i + j + half] = u_i - v_i;double next_w_r = w_r * wn_r - w_i * wn_i;double next_w_i = w_i * wn_r + w_r * wn_i;w_r = next_w_r;w_i = next_w_i;}}}int maiint n = 8;double x[] = {0, 1, 2, 3, 4, 5, 6, 7};double y[] = {0, 0, 0, 0, 0, 0, 0, 0};fft(x, y, n);for (int i = 0; i < n; i++)printf("(%f, %f)\n", x[i], y[i]);}return 0;以上程序实现了一个8点FFT算法,可以将输入信号{x[0],x[1], ..., x[7]}转换为频域信号{X[0], X[1], ..., X[7]}。

数字信号处理(西电上机实验)

数字信号处理实验报告实验一:信号、系统及系统响应一、实验目的:(1) 熟悉连续信号经理想采样前后的频谱变化关系,加深对时域采样定理的理解。

(2) 熟悉时域离散系统的时域特性。

(3) 利用卷积方法观察分析系统的时域特性。

(4) 掌握序列傅里叶变换的计算机实现方法,利用序列的傅里叶变换对连续信号、离散信号及系统响应进行频域分析。

二、实验原理与方法:(1) 时域采样。

(2) LTI系统的输入输出关系。

三、实验内容、步骤(1) 认真复习采样理论、离散信号与系统、线性卷积、序列的傅里叶变换及性质等有关内容,阅读本实验原理与方法。

(2) 编制实验用主程序及相应子程序。

①信号产生子程序,用于产生实验中要用到的下列信号序列:a. xa(t)=A*e^-at *sin(Ω0t)u(t)A=444.128;a=50*sqrt(2)*pi;b. 单位脉冲序列:xb(n)=δ(n)c. 矩形序列:xc(n)=RN(n), N=10②系统单位脉冲响应序列产生子程序。

本实验要用到两种FIR系统。

a. ha(n)=R10(n);b. hb(n)=δ(n)+2.5δ(n-1)+2.5δ(n-2)+δ(n-3)③有限长序列线性卷积子程序用于完成两个给定长度的序列的卷积。

可以直接调用MATLAB语言中的卷积函数conv。

conv用于两个有限长度序列的卷积,它假定两个序列都从n=0 开始。

调用格式如下:y=conv (x, h)四、实验内容调通并运行实验程序,完成下述实验内容:①分析采样序列的特性。

a. 取采样频率fs=1 kHz, 即T=1 ms。

b. 改变采样频率,fs=300 Hz,观察|X(ejω)|的变化,并做记录(打印曲线);进一步降低采样频率,fs=200 Hz,观察频谱混叠是否明显存在,说明原因,并记录(打印)这时的|X(ejω)|曲线。

②时域离散信号、系统和系统响应分析。

a. 观察信号xb(n)和系统hb(n)的时域和频域特性;利用线性卷积求信号xb(n)通过系统hb(n)的响应y(n),比较所求响应y(n)和hb(n)的时域及频域特性,注意它们之间有无差别,绘图说明,并用所学理论解释所得结果。

利用FFT对信号进行频谱分析

∑-=--==101,....,0,)(1)(N k nk N N n W k X N n x (3.2) 离散傅立叶反变换与正变换的区别在于N W 变为1-N W ,并多了一个N 1的运算。

因为N W 和1-N W 对于推导按时间抽取的快速傅立叶变换算法并无实质性区别,因此可将FFT 和快速傅立叶反变换(IFFT )算法合并在同一个程序中。

2.利用FFT 进行频谱分析若信号本身是有限长的序列,计算序列的频谱就是直接对序列进行FFT 运算求得)(k X ,)(k X 就代表了序列在[]π2,0之间的频谱值。

幅度谱 )()()(22k X k X k X I R +=相位谱 )()(arctan )(k X k X k R I =ϕ 若信号是模拟信号,用FFT 进行谱分析时,首先必须对信号进行采样,使之变成离散信号,然后就可按照前面的方法用FFT 来对连续信号进行谱分析。

按采样定理,采样频率s f 应大于2倍信号的最高频率,为了满足采样定理,一般在采样之前要设置一个抗混叠低通滤波器。

用FFT 对模拟信号进行谱分析的方框图如下所示。

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

避免混叠现象的唯一方法是保证采样速率足够高,使频谱混叠现象不致出现,即在确定采样频率之前,必须对频谱的性质有所了解。

在一般情况下,为了保证不出现频谱混叠,在采样前,先进行抗混叠滤波。

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

抗混叠低通滤波器 采样T=1/f s N 点FFT泄漏不能与混叠完全分开,因为泄漏导致频谱的扩展,从而造成混叠。

数字信号处理-实验三:用FFT对信号作频谱分析实验报告

实验三:用FFT对信号作频谱分析实验报告一、实验目的与要求学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用FFT。

二、实验原理用FFT对信号作频分析是学习数字信号处理的重要内容,经常需要进行分析的信号是模拟信号的时域离散信号。

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

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

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

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

三、实验步骤及内容(含结果分析)1)对以下序列进行FFT分析:选择FFT的变换区间N为8和16两种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比较。

程序:(1)选择FFT的变换区间N为8和16两种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比较。

x1n=[ones(1,4)];%产生R4(n)序列向量X1k8=fft(x1n,8);%计算x1n的8点DFT X1k16=fft(x1n,16);%计算x1n的16点DFT%以下绘制幅频特性曲线N=8;f=2/N*(0:N-1);figure(1);subplot(1,2,1);stem(f,abs(X1k8),'.');%绘制8点DFT的幅频特性图title('(1a)8点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');N=16;f=2/N*(0:N-1);subplot(1,2,2);stem(f,abs(X1k16),'.');%绘制8点DFT的幅频特性图title('(1a)16点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');%x2n和x3nM=8;xa=1:(M/2);xb=(M/2):-1:1;x2n=[xa,xb];%产生长度为8的三角波序列x2(n)x3n=[xb,xa];X2k8=fft(x2n,8);X2k16=fft(x2n,16);X3k8=fft(x3n,8);X3k16=fft(x3n,16);figure(2);N=8;f=2/N*(0:N-1);subplot(2,2,1);stem(f,abs(X2k8),'.');%绘制8点DFT的幅频特性图title('(2a)8点DFT[x_2(n)]');xlabel('ω/π');ylabel('幅度');subplot(2,2,3);stem(f,abs(X3k8),'.');%绘制8点DFT的幅频特性图title('(3a)8点DFT[x_3(n)]');xlabel('ω/π');ylabel('幅度');N=16;f=2/N*(0:N-1);subplot(2,2,2);stem(f,abs(X2k16),'.');%绘制8点DFT的幅频特性图title('(2a)16点DFT[x_2(n)]');xlabel('ω/π');ylabel('幅度');subplot(2,2,4);stem(f,abs(X3k16),'.');%绘制8点DFT的幅频特性图title('(3a)16点DFT[x_3(n)]');xlabel('ω/π');ylabel('幅度');【实验结果】(2)对以下周期序列进行谱分析:x4(n)=cos[(π/4)*n]x5(n)=cos[(π/4)*n]+cos[(π/8)*n]选择FFT的变换区间N为8和16两种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比较。

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