实验二数字信号处理.docx
《实验二数字信号处理.docx》由会员分享,可在线阅读,更多相关《实验二数字信号处理.docx(8页珍藏版)》请在冰豆网上搜索。
![实验二数字信号处理.docx](https://file1.bdocx.com/fileroot1/2023-1/9/b4e8a79c-169e-478f-880d-5202a59aaf8e/b4e8a79c-169e-478f-880d-5202a59aaf8e1.gif)
实验二数字信号处理
实验二 用FFT对信号作频谱分析
一、实验目的与要求
学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用FFT。
1、实验原理
用FFT对信号作频分析是学习数字信号处理的重要内容,经常需要进行分析的信号是模拟信号的时域离散信号。
对信号进行谱分析的重要问题是频谱分辨率D和分析误差。
频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是2π/N,因此要求2π/N小于等于D。
可以根据此式选择FFT的变换区间N。
误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时,离散谱的包络才能逼近连续谱,因此N要适当选择大一些。
2、实验步骤及内容
(1)对以下序列进行FFT分析:
x1(n)=R4(n)
n+1 0≤n≤3
x2(n)={ 8-n 4≤n≤7
0 其它n
4-n 0≤n≤3
X3(n)={ n-3 4≤n≤7
0 其它n
选择FFT的变换区间N为8和16两种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比较
xn1=[1111];
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;
n=4:
7;
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);
yn1=abs(Xk16);
n1=0:
length(yn1)-1;
Xk32=fft(xn,32);
yn2=abs(Xk32);
n2=0:
length(yn2)-1;
Xk64=fft(xn,64);
yn3=abs(Xk64);
n3=0:
length(yn3)-1;
figure;
subplot(3,1,1);
stem(n1,yn1,'.');
xlabel('n');
ylabel('yn1');
title('八点傅立叶变换');
subplot(3,1,2);
stem(n2,yn2,'.');
xlabel('n');
ylabel('yn2');
title('三十二点傅立叶变换');
subplot(3,1,3);
stem(n3,yn3,'.');
xlabel('n');
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的模不相等。