实验用MATLAB计算傅里叶变换

上传人:大米 文档编号:488919913 上传时间:2023-08-16 格式:DOCX 页数:7 大小:27.35KB
返回 下载 相关 举报
实验用MATLAB计算傅里叶变换_第1页
第1页 / 共7页
实验用MATLAB计算傅里叶变换_第2页
第2页 / 共7页
实验用MATLAB计算傅里叶变换_第3页
第3页 / 共7页
实验用MATLAB计算傅里叶变换_第4页
第4页 / 共7页
实验用MATLAB计算傅里叶变换_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《实验用MATLAB计算傅里叶变换》由会员分享,可在线阅读,更多相关《实验用MATLAB计算傅里叶变换(7页珍藏版)》请在金锄头文库上搜索。

1、实验二用MATLAB计算傅立叶变换(2 课时)、实验目的1、掌握用MATLAB计算DTFT及系统频率响应的方法。2、掌握用MATLAB计算DFT和IDFT的方法。3、掌握用DFT计算圆周卷积和线性卷积的方法。二、实验设备计算机一台,装有MATLAB软件。三、实验原理和基本操作1用 MATLAB 计算 DTFT对于序列x (n),其离散时间傅立叶变换(DTFT)定义为:X (jw) = x(n)e-(1)n=-g序列的傅立叶变换(DTFT)在频域是连续的,并且以w =2n为周期。因此只需要知道X(ejw) 的一个周期,即w =0,2n ,或-n,n 。就可以分析序列的频谱。用MATLAB计算DT

2、FT,必须在-n Ww Wn范围内,把w用很密的、长度很长的向量来近 似,该向量中各个值可用下式表示:2兀w=k*dw=k*(2)K2兀其中:dw =称为频率分辨率。它表示把数字频率的范围2n均分成K份后,每一份K的大小, k 是表示频率序数的整数向量,简称为频序向量,它的取值可以有几种方法:通常在 DTFT中,频率取-n Wwn的范围,当K为偶数时,取K KKk = - ,一 +,一1,0,1,片 一1222如果K为奇数,则取k =- + 0.5, ,-1,0,1,-0.522可以为奇偶两种情况综合出一个共同的确定频序向量k的公式;k=上式中表示向下取整。在MATLAB中的向下取整函数为fl

3、oor, floor (x)的作用是把x向下(向-方向)取整, 所以与(3)式等价的MATLAB语句为k二 floor( K- + 0.5):吟-0.5)(4)给定了输入序列(包括序列X及其位置向量n),又设定了频率分辨率d及频序向量k,则 DTFT的计算式(1)可以用一个向量与矩阵相乘的运算来实现。e -e-丿竹e-丿咲竹X 卸,X 巴),X 叫)二x(n1),x(nN)e -jjn2 e -j2n2 e -jKn25)e -叽e -叽e -丿叽如果频率向量表为 = v,, =k*d,而序列的位置向量为nx=n1: nN,则12K(5)式中的矩阵的指数部分可以写成j*nT*,用MATLAB语

4、句表达时,把代以w,转置符号nT换成MATLAB中的相应符号n,则求DTFT的程序可以写成:X 二 x * exp( - j * dw * n*k)例1求有限序列x=2,-1,1,1的 DTFT,其位置向量为nx=0: 3。假如取64个频点,画出它在-n n范围内的幅频和相频特性。程序如下:% 设定频序向量%用(1)式计算DTFT% 画幅频曲线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)subplot(2,1,1); plot(k*d

5、w,abs(X),subplot(2,1,2) ;plot(k*dw,angle(X), % 画相频曲线2.用MATLA B计算系统频率响应H(ejw)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份,分辨率为 n /N, w =0: N-1n /N。b和a分别为分子分母多项式的负幕系数向量,即多项式的首项是常

6、数项,以后按e-j的升幂排列,由此形成的多项式的系数向量。N 为所选的频率点数,它决定了频率分辨率的密度。这样求出的频率特性是在OW n之间的特性,如果要让MATLAB计算全频率OW L,则程序会自动给x后面补零,使其长度为N;如果NL,则程序会自动将x截断,取 前N个数据。同样,计算离散傅立叶反变换时,调用函数ifft方法为ifft (X)或ifft(X,N),其 输入变元的意义与fft函数相同。例3:长度为4的有限序列:x(0)=2,x(1)= -1,x=1,x(3)=1,求它的DFT。解: x=2,-1,1,1;X=fft(x)运行结果:4用 MATLAB 计算圆周卷积圆周卷积定理:设有

7、限长序列x (n)和x (n)的长度分别为N和N , N=maxN ,N 。x (n)1 2 1 2 1 2 1和x2(n)的N点DFT分别为X1(k)=DFTx1(n),X2(k)=DFTx2 (n).若 X (k) = X (k) * X (k)12则x/n)与x2 (n)的N点圆周卷积是x(n)=IDFTX(k)=龙x (m)x (n - m) )R (n)1 2 N Nm=0可以利用此定理和函数 fft、ifft 计算圆周卷积例 4:设 X(n)=l, 2,3, x2(n)=5, 4,-3,-2,计算 4 点圆周卷积 y(n)= x/n) x2 (n) 解:写出MATLAB程序如下:x

8、1=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)为叫点序列,x2 (n)为N?点序列,x/n)和x2 (n)的线性卷积为y(n)=m=0x (m) x (n - m)l2灿为(N1+ N2-1)点序列。如果Nn NF竹-1,则N点圆周卷积能代表线性卷积。例5:设X (n)与x 2 (n)是两个四点序列:x1(n)=1, 2, 2, 1, x2(n)=1, -1, 1, -1(1) 求它们的线性卷积 y(n); 计算圆周卷积,使得它与y(n)相等。解

9、:线性卷积可以调用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

10、=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-1xk=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=fftfi

11、lt(h,x,r)其中 h 代表系统的脉冲响应 h(n),x 是输入序列。在第一种格式中,程序自动把输入分成每段 512个样本。并按512点(如果h(n)的长度比512长,则按h(n)的长度)FFT进行各段的卷积运 算。在第二种调用格式中,r是用户指定的FFT长度,而输入x就按这个长度分段。例 6:设 x(n)=n+1,0n 9,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、上机运行上面给出的各个例子,记录程序运行结果。2、求有限长序列x(n)=l,3,5,2,l的DTFT,画出它在e= -88rad/s范围内的幅频和相频特性 曲线。3、长度为4的有限长序列:x(0)=2,x(1)=1,x=2,x(3)=8,求它的DFT。五、注意事项1、实验前复习相关理论知识。2、注意子函数调用时输入输出参数的匹配。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号