实验二用MATLAB计算傅里叶变换.doc_第1页
实验二用MATLAB计算傅里叶变换.doc_第2页
实验二用MATLAB计算傅里叶变换.doc_第3页
实验二用MATLAB计算傅里叶变换.doc_第4页
实验二用MATLAB计算傅里叶变换.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

实验二 用MATLAB计算傅立叶变换(2课时)一、 实验目的1、掌握用MATLAB计算DTFT及系统频率响应的方法。2、掌握用MATLAB计算DFT和IDFT的方法。3、掌握用DFT计算圆周卷积和线性卷积的方法。二、 实验设备计算机一台,装有MATLAB软件。三、 实验原理和基本操作1用MATLAB计算DTFT对于序列x(n),其离散时间傅立叶变换(DTFT)定义为: (1)序列的傅立叶变换(DTFT)在频域是连续的,并且以=2为周期。因此只需要知道的一个周期,即=0,2,或-,。就可以分析序列的频谱。用MATLAB计算DTFT,必须在-范围内,把用很密的、长度很长的向量来近似,该向量中各个值可用下式表示:w=k*dw=k* (2)其中:d= 称为频率分辨率。它表示把数字频率的范围2均分成K份后,每一份的大小,k是表示频率序数的整数向量,简称为频序向量,它的取值可以有几种方法:通常在DTFT中,频率取-的范围,当K为偶数时,取k如果K为奇数,则取k可以为奇偶两种情况综合出一个共同的确定频序向量k的公式;k= : (3)上式中表示向下取整。在MATLAB中的向下取整函数为floor,floor(x)的作用是把x向下(向-方向)取整,所以与(3)式等价的MATLAB语句为k (4) 给定了输入序列(包括序列x及其位置向量n),又设定了频率分辨率d及频序向量k,则DTFT的计算式(1)可以用一个向量与矩阵相乘的运算来实现。 (5)如果频率向量表为=,,=k*d,而序列的位置向量为nx=n1:nN,则(5)式中的矩阵的指数部分可以写成-j*nT*,用MATLAB语句表达时,把代以w,转置符号nT换成MATLAB中的相应符号n,则求DTFT的程序可以写成: 例1 求有限序列x=2,-1,1,1的DTFT,其位置向量为nx=0:3。假如取64个频点,画出它在-范围内的幅频和相频特性。程序如下:x=2,-1,1,1;nx=0:3;K=64;dw=2*pi/K;k=floor(-K/2+0.5):(K/2-0.5);% 设定频序向量%w=linspace(-8,8,1000);X=x*exp(-j*dw*nx*k)% 用(1)式计算DTFTsubplot(2,1,1); plot(k*dw,abs(X),% 画幅频曲线subplot(2,1,2) ;plot(k*dw,angle(X),% 画相频曲线2 用MATLA B计算系统频率响应MATLA B中用于求系统频率响应的函数是freqz,其功能是:由给定的系统函数H(Z)的分子和分母的系数向量绘制系统的幅度和相位响应。调用格式:H,w=freqz(b,a,N),或N缺省H,w=freqz(b,a),此时N取默认值512。H是系统的频率特性,它是一个N元的复数向量。w是数字频率向量,它把0到均分为N份,分辨率为/N,w =0:N-1/N。b和a分别为分子分母多项式的负幂系数向量,即多项式的首项是常数项,以后按e的升幂排列,由此形成的多项式的系数向量。N为所选的频率点数,它决定了频率分辨率的密度。这样求出的频率特性是在0之间的特性,如果要让MATLAB计算全频率0L,则程序会自动给x后面补零,使其长度为N;如果NL,则程序会自动将x截断,取前N个数据。同样,计算离散傅立叶反变换时,调用函数ifft方法为ifft(X)或ifft(X,N),其输入变元的意义与fft函数相同。例3:长度为4的有限序列:x(0)=2,x(1)= -1,x(2)=1,x(3)=1,求它的DFT。解:x=2,-1,1,1; X=fft(x)运行结果:4用MATLAB计算圆周卷积 圆周卷积定理:设有限长序列x(n)和x(n)的长度分别为N和N,N=maxN, N。x(n)和x(n)的N点DFT分别为 X(k)=DFTx(n), X(k)=DFTx(n).若X(k)= X(k)* X(k)则x(n)与x(n)的N点圆周卷积是x(n)=IDFTX(k)=可以利用此定理和函数fft、ifft计算圆周卷积例4:设x(n)=1,2,3,x(n)=5,4,-3,-2,计算4点圆周卷积y(n)= x(n) x(n)解:写出MATLAB程序如下:x1=1 2 3,x2=5 4 -3 -2X1 =fft(x1 ,4); X2 =fft(x2 ,4);Y= X1 .* X2 ;y=ifft(Y,4)运行结果:5利用圆周卷积计算线性卷积 设x(n)为N点序列,x(n)为N点序列,x(n)和x(n)的线性卷积为y(n)= y(n)为(N+ N-1)点序列。如果N N+ N-1,则N点圆周卷积能代表线性卷积。例5:设x(n)与x(n)是两个四点序列:x(n)=1,2,2,1, x(n)=1,-1,1,-1(1) 求它们的线性卷积y(n);(2) 计算圆周卷积,使得它与y(n)相等。解:线性卷积可以调用conv函数来求。圆周卷积可按例4的方法求。程序如下:x1=1,2,2,1;x2 =1,-1,1,-1;y=conv(x1 , x2 )X1 =fft(x1 ,7); X2 =fft(x2 ,7); Y= X1 .* X2 ;x3 =ifft(Y,7) 运行结果:6分段卷积 当x(n)长度远远大于h(n)时,要采用分段卷积的方法,以减少线性卷积的运算量。分段卷积的方法有重叠保留法和重叠相加法两种。(1) 重叠保留法设h(n)的长度为M,x(n)的长度为Lx,分段后每一段的有效数据的长度为L=N-M+1。编写出实现重叠保留法的函数ovrlpsav如下:function y=ovrlpsav(x,h,N)Lx=length(x);M=length(h);M1=M-1;L=N-M1;H=fft(h,N);x=zeros(1,M1),x,zeros(1,N-1);K=floor(Lx+M1-1)/(L)+1;Y=zeros(K+1,N);for k=0:K-1 xk=x(k*L+1:k*L+N); Xk=fft(xk); Y(k+1,:)=real(ifft(Xk.*H);endY=Y(:,M:N);y=(Y(:); (2) 重叠相加法MATLAB信号处理工具箱中的函数fftfilt.m可实现重叠相加法。它有两种调用格式:1)y=fftfilt(h,x)2)y=fftfilt(h,x,r)其中h代表系统的脉冲响应h(n),x是输入序列。在第一种格式中,程序自动把输入分成每段512个样本。并按512点(如果h(n)的长度比512长,则按h(n)的长度)FFT进行各段的卷积运算。在第二种调用格式中,r是用户指定的FFT长度,而输入x就按这个长度分段。例6:设x(n)=n+1,0n9,h(n)=1,0,-1。分别用ovrlpsav(按N=6)和fftfilt函数求x(n)与h(n)的线性卷积解:MATLAB程序为n=0:9;x=n+1;h=1,0,-1;N=6;y1=ovrlpsav(x,h,N)y2=fftfilt(h,x) 运行结果:四、 实验内容 1、上机运行上面给出的各个例子,记录

温馨提示

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

评论

0/150

提交评论