1、实验三:用 FFT 对信号作频谱分析实验报告一、 实验目的与要求 学习用 FFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用 FFT。 二、 实验原理 用 FFT 对信号作频分析是学习数字信号处理的重要内容,经常需要进行分析的信号是模拟信号的时域离散信号。对信号进行谱分析的重要问题是频谱分辨率 D 和分析误差。频谱分辨率直接和 FFT 的变换区间 N 有关,因为 FFT 能够实现的频率分辨率是 2/N,因此要求2 /N 小于等于 D。可以根据此式选择 FFT 的变换区间 N。误差主要来自于用 FFT 作频谱分析时,得到的是离散谱,而信号(周期信号除外
2、)是连续谱,只有当 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 点 D
3、FT %以下绘制幅频特性曲线 N=8; f=2/N*(0:N-1); figure(1); subplot(1,2,1);stem(f,abs(X1k8),.); %绘制 8 点 DFT 的幅频特性图 title(1a) 8 点 DFTx_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 点 DFTx_1(n);xlabel(/);ylabel(幅度); %x2n 和 x3n M=8;xa=1:(M/2); xb
4、=(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 点 DFTx_2(n);xlabel(/ );ylabel(幅度); subplot(2,2,3);stem(f,abs(X3k8),.); %绘制
5、8 点 DFT 的幅频特性图 title(3a) 8 点 DFTx_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 点 DFTx_2(n);xlabel(/);ylabel(幅度); subplot(2,2,4);stem(f,abs(X3k16),.); %绘制 8 点 DFT 的幅频特性图 title(3a) 16 点 DFTx_3(n);xlabel(/);ylabel(幅度); 【实验结果】(2)对以
6、下周期序列进行谱分析: x4(n)=cos(/4)*n x5(n)= cos(/4)*n+ cos(/8)*n 选择 FFT 的变换区间 N 为 8 和 16 两种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比较。程序:%x4n 和 x5n N=8;n=0:N-1; x4n=cos(pi*n/4); x5n=cos(pi*n/4)+cos(pi*n/8); X4k8=fft(x4n,8); X4k16=fft(x4n,16);X5k8=fft(x5n,8); X5k16=fft(x5n,16); figure(3); N=8; f=2/N*(0:N-1); subplot(2,
7、2,1);stem(f,abs(X4k8),.); %绘制 8 点 DFT 的幅频特性图 title(4a) 8 点 DFTx_4(n);xlabel(/ );ylabel(幅度); subplot(2,2,3);stem(f,abs(X5k8),.); %绘制 8 点 DFT 的幅频特性图 title(5a) 8 点 DFTx_5(n);xlabel(/ );ylabel(幅度);N=16; f=2/N*(0:N-1); subplot(2,2,2);stem(f,abs(X4k16),.); %绘制 8 点 DFT 的幅频特性图 title(4a) 16 点 DFTx_4(n);xlabe
8、l(/);ylabel(幅度); subplot(2,2,4);stem(f,abs(X5k16),.); %绘制 8 点 DFT 的幅频特性图title(5a) 16 点 DFTx_5(n);xlabel(/ );ylabel(幅度); 【实验结果】(3)对模拟周期信号进行频谱分析: x6(n)= cos(8t)+ cos(16t)+ cos(20t) 选择采样频率 Fs=64Hz,FFT 的变换区间 N 为 16、32、64 三种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比较。程序:%x8n Fs=64; T=1/Fs; N=16;n=0:N-1; %对于 N=16 的情
9、况 nT = n*T; x8n=cos(8*pi*nT)+cos(16*pi*nT)+cos(20*pi*nT) X8k16=fft(x8n,16); N=16; f=2/N*(0:N-1); figure(4); subplot(2,2,1);stem(f,abs(X8k16),.); %绘制 8 点 DFT 的幅频特性图 title(8a) 16 点 DFTx_8(n);xlabel(/);ylabel(幅度); N=32;n=0:N-1; %对于 N=16 的情况nT = n*T; x8n=cos(8*pi*nT)+cos(16*pi*nT)+cos(20*pi*nT) X8k32=ff
10、t(x8n,32); N=32; f=2/N*(0:N-1); subplot(2,2,2);stem(f,abs(X8k32),.); %绘制 8 点 DFT 的幅频特性图 title(8a) 32 点 DFTx_8(n);xlabel(/);ylabel(幅度);N=64;n=0:N-1; %对于 N=16 的情况 nT = n*T; x8n=cos(8*pi*nT)+cos(16*pi*nT)+cos(20*pi*nT) X8k64=fft(x8n,64);N=64; f=2/N*(0:N-1); subplot(2,2,3);stem(f,abs(X8k64),.); %绘制 8 点
11、DFT 的幅频特性图 title(8a) 64 点 DFTx_8(n);xlabel(/);ylabel(幅度);【实验结果】四、思考题及实验体会 通过实验,我知道了用 FFT 对信号作频谱分析是学习数字信号处理的重要内容。经常需要进行谱分析的信号是模拟信号和时域离散信号。对信号进行谱分析的重要问题是频谱分辨率 D 和分析误差。频谱分辨率直接和 FFT 的变换区间 N 有关,因为 FFT 能够实现的频率分辨率是 2ND。可以根据此式选择 FFT 的变换区间 N。误差主要来自于用 FFT 作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当 N 较大时,离散谱的包络才能逼近于连续谱,因此 N 要适当选择大一些。 周期信号的频谱是离散谱,只有用整数倍周期的长度作 FFT,得到的离散谱才能代表周期信号的频谱。如果不知道信号周期,可以尽量选择信号的观察时间长一些。 对模拟信号进行频谱分析时,首先要按照采样定理将其变成时域离散信号。如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的普分析进行。