FFT对连续信号和时域离散信号进行谱分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FFT对连续信号和时域离散信号进行谱分析
一、实验目的与要求
学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用FFT。
二、实验原理
用FFT对信号作频分析是学习数字信号处理的重要内容,经常需要进行分析的信号是模拟信号的时域离散信号。
对信号进行谱分析的重要问题是频谱分辨率D和分析误差。
频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是2π/N,因此要求2π/N小于等于D。
可以根据此式选择FFT的变换区间N。
误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时,离散谱的包络才能逼近连续谱,因此N要适当选择大一些。
三、实验步骤及内容
(1)对以下序列进行FFT分析:
x1(n)=R4(n)
n+1 0≤n ≤3
x2(n)={ 8-n 4≤
0 其它n
4-n 0≤n≤3
X3(n)={ n-3 4≤n≤7
其它n
选择FFT的变换区间N为8和16两种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比较
xn1=[1 1 1 1];
Xk18=fft(xn1,8);
yn11=abs(Xk18);
n11=0:length(yn11)-1;
Xk116=fft(xn1,16);
yn12=abs(Xk116);
n12=0:length(yn12)-1;
n=0:3;
x21=n+1;
x31=4-n;
x22=8-n;
x32=n-3;
xn2=[x21,x22];
Xk28=fft(xn2,8);
yn21=abs(Xk28);
n21=0:length(yn21)-1; Xk216=fft(xn2,16); yn22=abs(Xk216);
n22=0:length(yn22)-1; xn3=[x31,x32];
Xk38=fft(xn3,8);
yn31=abs(Xk38);
n31=0:length(yn31)-1; Xk316=fft(xn3,16); yn32=abs(Xk316);
n32=0:length(yn32)-1; figure;
subplot(3,2,1);
stem(n11,yn11,'.'); xlabel('n');
ylabel('yn11');
title('八点傅立叶变换'); subplot(3,2,2);
stem(n12,yn12,'.'); xlabel('n');
ylabel('yn12');
title('十六点傅立叶变换') subplot(3,2,3);
stem(n21,yn21,'.'); xlabel('n');
ylabel('yn21');
title('八点傅立叶变换'); subplot(3,2,4);
stem(n22,yn22,'.'); xlabel('n');
ylabel('yn22');
title('十六点傅立叶变换') subplot(3,2,5);
stem(n31,yn31,'.'); xlabel('n');
ylabel('yn31');
title('八点傅立叶变换'); subplot(3,2,6);
stem(n32,yn32,'.');
xlabel('n');
ylabel('yn32');
title('十六点傅立叶变换')
(2)对以下周期序列进行谱分析:
x4(n)=cos[(π/4)*n]
x5(n)= cos[(π/4)*n]+ cos[(π/8)*n]
选择FFT的变换区间N为8和16两种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比较
n=0:7;
xn1=cos(pi*n/4);
xn2=cos(pi*n/4)+cos(pi*n/8); Xk18=fft(xn1,8);
yn11=abs(Xk18);
n11=0:length(yn11)-1;
Xk28=fft(xn2,8);
yn21=abs(Xk28);
n21=0:length(yn21)-1;
n=0:15;
xn1=cos(pi*n/4);
xn2=cos(pi*n/4)+cos(pi*n/8); Xk116=fft(xn1,16);
yn12=abs(Xk116);
n12=0:length(yn12)-1;
Xk216=fft(xn2,16);
yn22=abs(Xk216);
n22=0:length(yn22)-1; figure;
subplot(2,2,1);
stem(n11,yn11,'.');
xlabel('n');
ylabel('yn11');
title('八点傅立叶变换'); subplot(2,2,2);
stem(n12,yn12,'.');
xlabel('n');
ylabel('yn12');
title('十六点傅立叶变换'); subplot(2,2,3);
stem(n21,yn21,'.');
xlabel('n');
ylabel('yn21');
title('八点傅立叶变换'); subplot(2,2,4);
stem(n22,yn22,'.');
xlabel('n');
ylabel('yn22');
title('十六点傅立叶变换')
(3)对模拟周期信号进行频谱分析:
x6(n)= cos(8πt)+ cos(16πt)+ cos(20πt)
选择采样频率Fs=64Hz,FFT的变换区间N为16、32、64三种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比。
Fs=64;
T=1/Fs;
N=64;n=0:N-1;
xn=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n *T);
Xk16=fft(xn,16);
ylabel('yn3');
title('六十四点傅立叶变换');
四、思考题
1对于周期序列,如果周期不知道,如何用FFT 进行谱分析?
周期信号的周期预先不知道时,可先截取M点进行DFT,再将截取长度扩大1倍截取,比较结果,如果二者的差别满足分析误差要求,则可以近似表示该信号的频谱,如果不满足误差要求就继续将截取长度加倍,重复比较,直到结果满足要求。
2如何选择FFT的变换区间?(包括非周期信号和周期信号)
(1)对于非周期信号,有频谱分辨率F,而频谱分辨率直接和FFT的变换区间有关,因为FFT 能够实现的频率分辨率是2π/N...因此有最小的N>2π/F。
就可以根据此式选择FFT的变换区间。
(2)对于周期信号周期信号的频谱是离散谱只有用整数倍周期的长度作FFT得到的离散谱才能代表周期信号的频谱。
3 当N=8时,x1(n)和x3(n)的幅频特性会相同吗?为什么?N=16 呢?
)当N=8时,x2(n)和x3(n) 的幅频特性相同, 当N=16时,x2(n)和x3(n) 的幅频特性不相同。
当n=8时,满足循环移位关系,所以n=8时,x2(n)与x3(n)的8点DFT的模相等。
当n=16时,不满足循环移位关系,所以n=16时,x2(n)与x3(n)的16点DFT的模不相等。