当前位置:首页 > 实验五快速Fourier变换FFT及的应用
实用标准文案
实验五 快速Fourier变换(FFT)及应用
一、 实验目的
1. 验证频域采样定理。
2. 在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉MATLAB中的有关函数。 3. 应用FFT对典型信号进行频谱分析。
4. 了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中能够正确应用
FFT。
5. 应用FFT实现序列的线性卷积。
二、 实验内容
1. 验证频域采样定理。
利用MATLAB产生一个长度为N的三角波序列x(n),并完成以下要求: (1) 计算N=30时的64点DFT,并图示x(n)和X(k); (2) 对X(k)在[0,2
上进行
点抽样,得到X1(k)?X(2k),k?0,1,?,31;
(3) 求出X1(k)的32点IDFT,即得到x1(n)?IDFT[X1(k)];
(4) 绘制出x1((n))32的波形,观察x1((n))32和x(n)的关系,并加以说明。 解:MATLAB程序清单如下: M=64; % 指定DFT点数 N=30; % 指定序列长度 n=0:N-1;
xn=2*[0:N/2,N/2-1:-1:1]/N; % 产生幅度为1的N点三角波序列
精彩文档
实用标准文案
Xk=fft(xn,M); % 计算Xk=DFT[x(n)]; Xk1=Xk(1:2:M); % 对Xk隔点抽取得到Xk1 xn1=ifft(Xk1); % 对Xk1作IDFT得到xn1 n1=0:2*M;
xc=xn1(mod(n1,M/2)+1); % 对xn1以M/2为周期进行延拓 subplot(2,2,1);stem(n,xn,'.');grid; title([num2str(M/2) '点三角波序列x(n)']); subplot(2,2,2);k=0:M-1;stem(k,abs(Xk),'.');grid; axis([0,M,0,max(Xk)]);
title(['三角波序列x(n)的' num2str(M) '点DFT:X(k)']); subplot(2,2,4);k1=0:M/2-1;stem(k1,abs(Xk1),'.');grid; axis([0,M/2,0,max(Xk)]);
title(['隔点抽取X(k)得到' num2str(M/2) '点DFT:X_1(k)']); subplot(2,2,3);stem(n1,xc,'.');grid; axis([0,2*M,0,max(xn1)]); title('序列x_1(n)的周期延拓'); 由程序运行结果可以看出,在频域[0,2
上采样点数小于离散序列x(n)的长度时,将产
生时域混叠,不能由X1(k)来恢复出原序列x(n)。只有当频域采样点数大于等于序列长度时,才能由频域采样X1(k)无失真的恢复出原序列x(n),即x(n)?IDFT[X1(k)]。 2. 已知x(n) 是N1点序列,序列的有值区间为[0, N1-1],h(n)是N2 点序列,序列的有值区间为[0,N2-1],现将序列右移m 位,即序列的有值区间变为[m, m+N1-1],然后对这序列做N 点圆周卷积得y(n),试问y(n)中哪个n 值的范围对应于x(n)* h(n)的结果。
精彩文档
实用标准文案
m=2; N=7;
xn=[1 2 2 1 -1 2]; hn=ones(1,4);
y1=conv(xn,hn) % xn和hn的线性卷积
xn=[xn zeros(1,N-length(xn))]; hn1=[hn zeros(1,N-length(hn))];
yc1=ifft(fft(xn).*fft(hn1)) % xn和hn的N点圆周卷积
hn2=[zeros(1,m) hn];
xn=[xn zeros(1,N-length(xn))]; hn2=[hn2 zeros(1,N-length(hn2))];
yc2=ifft(fft(xn).*fft(hn2)) % xn和移位后的hn的N点圆周卷积
3. 理解高密度谱和高分辨率频谱的概念。 设x(n)?cos(0.48?n)?cos(0.52?n)
0?n?9,求X1(k); (1) 取x1(n)?x(n),(2) 将(1)中的x1(n)补零加长到0?n?99,记为x2(n),求X2(k);
0?n?99,求X3(k); (3) 增加抽样点的数目,取x3(n)?x(n),L
程序清单如下:
定义序列x(n)
精彩文档
实用标准文案
function y=xn(n)
y=cos(0.48*pi*n)+cos(0.52*pi*n)+cos(0.51*pi*n); % 主程序清单 clf
xn=inline('cos(0.485*pi*n)+cos(0.51*pi*n)+cos(0.52*pi*n)','n'); % 定义一个inline局部函数 N1=10; N2=100;
n1=0:N1-1;k1=n1; n2=0:N2-1;k2=n2; w1=k1*2*pi/N1; w2=k2*2*pi/N2; w3=w2; x1=xn(n1); Xk1=fft(x1);
x2=[x1 zeros(1,N2-N1)]; Xk2=fft(x2);
x3=xn(n2); Xk3=fft(x3);
subplot(3,2,1)
精彩文档
共分享92篇相关文档