数字信号处理实验二用FFT做谱分析.docx
《数字信号处理实验二用FFT做谱分析.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验二用FFT做谱分析.docx(16页珍藏版)》请在冰豆网上搜索。
数字信号处理实验二用FFT做谱分析
《数字信号处理》
实践报告
题目:
实验二用FFT做谱分析
1.实验目的
(1)进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的基本性质)。
(2)熟悉FFT算法原理和FFT子程序的应用。
(3)学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。
2.实验步骤
(1)复习DFT的定义、性质和用DFT作谱分析的有关内容。
(2)复习按时间抽选法FFT算法原理及相应的运算流图
(3)编制信号产生子程序,产生以下典型信号供谱分析用:
x1(n)=R4(n)
x2(n)=
x3(n)=
x4(n)=cos(πn/4)
x5(n)=sin(πn/8)
x6(t)=cos8πt+cos16πt+cos20πt
应当注意,如果给出的是连续信号xa(t),则首先要根据其最高频率确定抽样频率fs以及由频率分辨率选择抽样点数N,然后对其进行软件抽样(即计算x(n)=xa(nT),
0≤n≤N-1),产生对应序列x(n)。
对信x6(t),频率分辨率的选择要以能分辨开其中的三个频率对应的谱线为准则。
对周期序列,最好截取周期的整数倍进行谱分析,否则有可能产生较大的分析误差。
请实验者根据DFT的隐含周期性思考这个问题。
(4)编写主程序。
图2.1给出了主程序框图,供参考。
对2中所给出的信号逐个进行谱分析。
下面给出针对各信号的FFT变换区间N以及对连续信号x6(t)的抽样频率fs,供实验时参考。
x1(n),x2(n),x3(n),x4(n),x5(n):
N=8,16
x6(t):
fs=64(Hz),N=16,32,64
3、实验内容
(1)x1(n)=R4(n)
程序代码:
x1=ones(1,4);
N=4;
n=[0:
1:
3];
stem(n,x1);
X1=fft(x1,8);
magX1=abs(X1);
k=[0:
7];
stem(k,magX1);
x12=ones(1,4);
N=16;
n1=[0:
3];
stem(n1,x12);
X12=fft(x12,16);
magX12=abs(X12);
k1=[0:
15];
stem(k1,magX12);
subplot(2,2,1):
stem(n,x1);
subplot(2,2,2):
stem(n1,x12);
subplot(2,2,3):
stem(k,magX1);
subplot(2,2,4):
stem(k1,magX12);
(2)x2(n)=
程序代码:
x2=[1:
4,4:
-1:
1];
n=[0:
3,4:
7];
stem(n,x2);
X2=fft(x2,8);
magX2=abs(X2);
k=[0:
7];
stem(k,magX2);
x2=[1:
4,4:
-1:
1];
n1=[0:
3,4:
7];
stem(n,x2);
X21=fft(x2,16);
magX21=abs(X21);
k1=[0:
15];
stem(k1,magX21);
subplot(2,2,1):
stem(n,x2);
subplot(2,2,2):
stem(n1,x2);
subplot(2,2,3):
stem(k,magX2);
subplot(2,2,4):
stem(k1,magX21);
(3)x3(n)=
程序代码:
x3=[4:
-1:
1,1:
4];
n=[0:
3,4:
7];
stem(n,x3);
X3=fft(x3,8);
magX3=abs(X3);
k=[0:
7];
stem(k,magX3);
x3=[4:
-1:
1,1:
4];
n1=[0:
3,4:
7];
stem(n,x3);
X31=fft(x3,16);
magX31=abs(X31);
k1=[0:
15];
stem(k1,magX31);
subplot(2,2,1):
stem(n,x3);
subplot(2,2,2):
stem(n1,x3);
subplot(2,2,3):
stem(k,magX3);
subplot(2,2,4):
stem(k1,magX31);
(4)x4(n)=cos(πn/4)
程序代码:
n=[0:
7];
x4=cos(pi*n/4);
stem(n,x4);
X4=fft(x4,8);
magX4=abs(X4);
k=[0:
7];
stem(k,magX4);
n1=[0:
15];
x41=cos(pi*n1/4);
stem(n,x4);
X41=fft(x4,16);
magX41=abs(X41);
k1=[0:
15];
stem(k1,magX41);
subplot(2,2,1):
stem(n,x4);
subplot(2,2,2):
stem(n1,x41);
subplot(2,2,3):
stem(k,magX4);
subplot(2,2,4):
stem(k1,magX41);
(5)x5(n)=sin(πn/8)
程序代码:
n=0:
1:
7;
x5=sin(pi*n/8);
stem(n,x5);
X5=fft(x5,8);
magX5=abs(X5);
k=[0:
7];
stem(k,magX5);
n1=0:
1:
15;
x51=sin(pi*n1/8);
stem(n1,x51);
X51=fft(x5,16);
magX51=abs(X51);
k1=[0:
15];
stem(k1,magX51);
subplot(2,2,1):
stem(n,x5);
subplot(2,2,2):
stem(n1,x51);
subplot(2,2,3):
stem(k,magX5);
subplot(2,2,4):
stem(k1,magX51);
(6)x6(t)=cos8πt+cos16πt+cos20πt
N=32
程序代码:
fs=64;
T=1/fs;
t=0:
T:
1/2-T;
x6=cos(2*pi*4*t)+cos(2*pi*8*t)+cos(2*pi*10*t);
stem(t,x6);
X6=fft(x6,32);
magX6=abs(X6);
k=[0:
31];
stem(k,magX6);
subplot(2,1,1):
stem(t,x6);
subplot(2,1,2):
stem(k,magX6);
N=16
程序代码:
fs=64;
T=1/fs;
t=0:
T:
1/4-T;
x6=cos(2*pi*4*t)+cos(2*pi*8*t)+cos(2*pi*10*t);
stem(t,x6);
X6=fft(x6,16);
magX6=abs(X6);
k=[0:
15];
stem(k,magX6);
subplot(2,1,1):
stem(t,x6);
subplot(2,1,2):
stem(k,magX6);
N=64
程序代码:
fs=64;
T=1/fs;
t=0:
T:
1-T;
x6=cos(2*pi*4*t)+cos(2*pi*8*t)+cos(2*pi*10*t);
stem(t,x6);
X6=fft(x6,64);
magX6=abs(X6);
k=[0:
63];
stem(k,magX6);
subplot(2,1,1):
stem(t,x6);
subplot(2,1,2):
stem(k,magX6);
思考题:
1、在N=8时,x2(n)和x3(n)的幅频特性会相同吗?
为什么?
N=16呢?
答:
在N=8时,x2(n)和x3(n)的幅频特性相同,x3(n)=x2((n-4))8,0≤n≤7
DFT(x3(n))=e-j(2
/8)k4X2[k]=e-j
kX2[k],所以x2(n)和x3(n)的幅频特性相同。
N=16时不相同。
N=16时,x2(n)和x3(n)均需补零,不再满足循环位移。
2、通过对x4(n),x5(n)的分析,你发现这两个信号有哪些频率成分?
你得出什么结论?
答:
DFT采样结果因采样点数不同而变化。
3、如果周期信号的周期预先不知道,如何用FFT进行谱分析?
答:
如果周期信号的周期预先不知道,可先截取M点的进行FFT,即
再将截取长度扩大1倍,截取
比较
和
,如果二者的主谱差别满足分析误差要求,则以
或
可近似表示
的频谱,否则,继续截取长度加倍,直至前后两次分析所得主谱频率差别满足误差要求。