欧阳化创编 2024..02.12
DFT频谱分析作业
时间:2024.02.12
创作人:欧阳化 通信工程 2013040150
作业一
设周期序列
截取N 点长得到
(1)N=10,做10点DFT,得到X1(k); (2)N=10,做100点补零DFT,得到X2(k); (3)N=100,做100点DFT,得到X3(k)。 要求:针对以上三种情况,分别输出|X1(k)|、|X2(k)|、|X3(k)|的图形,并进行比较、分析和讨
论。 解:
代码如下
%双频周期信号的DFT分析 n=0:1000;
x=cos(0.48*pi*n)+cos(0.52*pi*n);%时域的离散时间信号 %-----------N=10 10点DFT-------------% N=10;%截取的序列长度 N0=10;?T点数 N0>N
xn=x(1:N);%取一个周期的长度 Xk=fft(xn,N0); subplot(3,1,1)
stem(0:1:N0-1,abs(Xk),'fill','MarkerSize',3.75)%取模画图 title('N=10 10点DFT') xlabel('k');ylabel('|X1(k)|') grid
%----------N=10 100点补零DFT----------% N=10;%截取的序列长度 N0=100;?T点数 N0>N
欧阳化创编 2024..02.12
欧阳化创编 2024..02.12
xn=x(1:N);%取一个周期的长度 Xk=fft(xn,N0); subplot(3,1,2)
stem(0:1:N0-1,abs(Xk),'fill','MarkerSize',3.75)%取模画图 grid
title('N=10 100点补零DFT') xlabel('k');ylabel('|X2(k)|')
%----------N=100 100点DFT------------% N=100;%截取的序列长度 N0=100;?T点数 N0>N
xn=x(1:N);%取一个周期的长度 Xk=fft(xn,N0); subplot(3,1,3)
stem(0:1:N0-1,abs(Xk),'fill','MarkerSize',3.75)%取模画图 grid
title('N=100 100点DFT') xlabel('k');ylabel('|X3(k)|')
运行,得结果如图1所示:
N=10 10点DFT10|X1(k)|5001235kN=10 100点补零DFT4678910|X2(k)|500102030405060kN=100 100点DFT708090100100|X3(k)|50001020304050k60708090100图 1 DFT频谱
观察对比:
1)
10点DFT的| X1(k)|出现明显的栅栏效应,相邻谱线间隔很大,而100点DFT的间隔较小,说明通过增大DFT点数N0即频域抽样点数,可以减小栅栏效应;
欧阳化创编 2024..02.12
欧阳化创编 2024..02.12
2)
| X2(k)|与| X3(k)|相比出现了明显的频谱泄漏,即截断效应。由于DFT需要对时域序列进行截断,对x(n)乘一个N点长的矩形窗函数N(n) (主瓣宽度为4/N), N越大主瓣越小引起的泄漏就越小。
作业二
设
。用FFT分析其
频谱结构,选择不同的截取长度Tp,观察截断效应,试用加窗的方法降低旁瓣。
解:
加矩形窗的FFT代码如下
%单频周期信号的DFT分析 cos(pi * t) 0.5Hz fs=400;% 采样频率HZ
f1=100;f2=50;f3=25;%模拟频率HZ n=0:1000;
x=cos(2*pi*f1*n/fs)+sin(2*pi*f2*n/fs)+cos(2*pi*f3*n/fs);%时域的离散时间信号 %----------Tp=0.04 Tp=0.04;
N=fs*Tp;%截取的序列长度 N0=2048;?T点数 N0>N xn=x(1:N);%取一个周期的长度 Xk=fft(xn,N0);
Xk=abs(Xk)./max(abs(Xk)); subplot(3,1,1)
stem(0:1:N0-1,Xk,'fill','MarkerSize',3.75)%取模画图 grid
title('Tp=0.04s');xlabel('k');ylabel('|X(k)|') axis([0 2200 0 1.2]) %----------Tp=4*0.04 Tp=4*0.04;
N=fs*Tp;%截取的序列长度 N0=2048;?T点数 N0>N xn=x(1:N);%取一个周期的长度 Xk=fft(xn,N0);
Xk=abs(Xk)./max(abs(Xk)); subplot(3,1,2)
stem(0:1:N0-1,Xk,'fill','MarkerSize',3.75)%取模画图 grid
title('Tp=4*0.04s');xlabel('k');ylabel('|X(k)|') axis([0 2200 0 1.2]) %----------Tp=16*0.04
欧阳化创编 2024..02.12