数字信号处理实验报1.docx
《数字信号处理实验报1.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验报1.docx(11页珍藏版)》请在冰豆网上搜索。
数字信号处理实验报1
数字信号处理实验报告
实验项目名称用FFT作谱分析
所属课程数字信号处理
实验类型探究性
实验日期2012-12-17
班别
学号
姓名
实验二用FFT作谱分析
一、实验题目:
用FFT作谱分析
二、实验目的:
1.进一步加深对DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的基本性质)。
2.熟悉FFT算法原理和FFT子程序的应用。
3.学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。
三、实验原理:
快速傅立叶变换(FFT)算法
长度为N的序列的离散傅立叶变换为:
首先按n的奇偶把时间序列x(n)分解为两个长为N/2点的序列
r=0,1,...,N/2-1
r=0,1,...,N/2-1
则x(n)的DFT为X(K),则有:
由于,故有
其中分别为的N/2点DFT。
因为均是以N/2为周期的,且。
因此可将N点DFT分解为下面的形式:
通过上面的推导可以看出,N点的DFT可以分解为两个N/2点的DFT,每个N/2点的DFT又可以分解为两个N/4点的DFT。
依此类推,当N为2的整数次幂时(),由于每分解一次降低一阶幂次,所以通过M次的分解,最后全部成为一系列2点DFT运算。
以上就是按时间抽取的快速傅立叶变换(FFT)算法。
序列的离散傅立叶反变换为:
离散傅立叶反变换与正变换的区别在于变为,并多了一个1/N的运算。
因为旋转因子对于推导按时间抽取的快速傅立叶变换算法并无实质性区别,因此可将FFT和快速傅立叶反变换(IFFT)算法合并在同一个程序中。
四、实验程序:
(FFT用Matlab工具箱带的函数)
%产生信号x1
n=0:
7;
x1=(n>=0)-(n>=4);
subplot(2,2,1);
stem(n,x1,'.');xlabel('n');ylabel('x1(n)');title('x1(n)的波形');
subplot(2,2,2);
stem(abs(fft(x1,8)));xlabel('k');ylabel('X1(k)');title('x1(n)的N=8点FFT');
n=0:
7;
x=(n>=0)-(n>=4);
subplot(2,2,3);
stem(n,x1,'.');xlabel('n');ylabel('x1(n)');title('x1(n)的波形');
subplot(2,2,4);
stem(abs(fft(x1,16)));xlabel('k');ylabel('X1(k)');title('x1(n)的N=16点FFT');
%产生信号x2
fori=1:
4
x(i)=i;
end
fori=5:
8
x(i)=9-i;
end
closeall;
subplot(2,2,1);
stem(x);xlabel('n');ylabel('x2(n)');title('x2(n)的波形');
subplot(2,2,2);
stem(abs(fft(x,8)));xlabel('k');ylabel('X2(k)');title('x2(n)的N=8点FFT');
fori=1:
4
x(i)=i;
end
fori=5:
8
x(i)=9-i;
end
subplot(2,2,3);
stem(x);xlabel('n');ylabel('x2(n)');title('x2(n)的波形');
subplot(2,2,4);
stem(abs(fft(x,16)));xlabel('k');ylabel('X2(k)');title('x2(n)的N=16点FFT');
%产生信号x3
fori=1:
4
x(i)=5-i;
end
fori=5:
8
x(i)=i-4;
end
closeall;
subplot(2,2,1);
stem(x);xlabel('n');ylabel('x3(n)');title('x3(n)的波形');
subplot(2,2,2);
stem(abs(fft(x,8)));xlabel('k');ylabel('X3(k)');title('x3(n)的N=8点FFT');
fori=1:
4
x(i)=5-i;
end
fori=5:
8
x(i)=i-4;
end
subplot(2,2,3);
stem(x);xlabel('n');ylabel('x3(n)');title('x3(n)的波形');
subplot(2,2,4);
stem(abs(fft(x,16)));xlabel('k');ylabel('X3(k)');title('x3(n)的N=16点FFT');
%产生信号x4
n=0:
7;
x4=cos((pi/4)*n);
subplot(2,2,1);
stem(n,x4,'.');xlabel('n');ylabel('x4(n)');title('x4(n)的波形');
subplot(2,2,2);
stem(abs(fft(x4,8)));xlabel('k');ylabel('X4(k)');title('x4(n)的N=8点FFT');
n=0:
7;
x4=cos((pi/4)*n);
subplot(2,2,3);
stem(n,x4,'.');xlabel('n');ylabel('x4(n)');title('x4(n)的波形');
subplot(2,2,4);
stem(abs(fft(x4,16)));xlabel('k');ylabel('X4(k)');title('x4(n)的N=16点FFT');
%产生信号x5
n=0:
15;
x5=sin((pi/8)*n);
subplot(2,2,1);
stem(n,x5,'.');xlabel('n');ylabel('x5(n)');title('x5(n)的波形');
subplot(2,2,2);
stem(abs(fft(x5,8)));xlabel('k');ylabel('X5(k)');title('x5(n)的N=8点FFT');
n=0:
15;
x5=sin((pi/8)*n);
subplot(2,2,3);
stem(n,x5,'.');xlabel('n');ylabel('x5(n)');title('x5(n)的波形');
subplot(2,2,4);
stem(abs(fft(x5,16)));xlabel('k');ylabel('X5(k)');title('x5(n)的N=16点FFT');
%产生信号x6
fs=64;
T=1/fs;
x6=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T);
subplot(2,2,1);
stem(n,x6,'.');xlabel('n');ylabel('x6(n)');title('x6(n)的波形');
subplot(2,2,2);
stem(abs(fft(x6,8)));xlabel('k');ylabel('X6(k)');title('x6(n)的N=8点FFT');
fs=64;
T=1/fs;
x6=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T);
subplot(2,2,3);
stem(n,x6,'.');xlabel('n');ylabel('x6(n)');title('x6(n)的波形');
subplot(2,2,4);
stem(abs(fft(x6,16)));xlabel('k');ylabel('X6(k)');title('x6(n)的N=16点FFT');
%产生信号x7
n=0:
15;
x7=cos((pi/4)*n)+sin((pi/8)*n);
subplot(2,2,1);
stem(n,x7,'.');xlabel('n');ylabel('x7(n)');title('x7(n)的波形');
subplot(2,2,2);
stem(abs(fft(x7,8)));xlabel('k');ylabel('X7(k)');title('x7(n)的N=8点FFT');
n=0:
15;
x7=cos((pi/4)*n)+sin((pi/8)*n);
subplot(2,2,3);
stem(n,x7,'.');xlabel('n');ylabel('x7(n)');title('x7(n)的波形');
subplot(2,2,4);
stem(abs(fft(x7,16)));xlabel('k');ylabel('X7(k)');title('x7(n)的N=16点FFT');
%产生信号x8
n=0:
15;
x8=cos((pi/4)*n)+j*sin((pi/8)*n);
subplot(2,2,1);
stem(n,x8,'.');xlabel('n');ylabel('x8(n)');title('x8(n)的波形');
subplot(2,2,2);
stem(abs(fft(x8,8)));xlabel('k');ylabel('X8(k)');title('x8(n)的N=8点FFT');
n=0:
15;
x8=cos((pi/4)*n)+j*sin((pi/8)*n);
subplot(2,2,3);
stem(n,x8,'.');xlabel('n');ylabel('x8(n)');title('x8(n)的波形');
subplot(2,2,4);
stem(abs(fft(x8,16)));xlabel('k');ylabel('X8(k)');title('x8(n)的N=16点FFT');
五、实验结果及分析
用上述程序可得到各自的图形及其8点,16点FFT,如下:
图1x1及其16点FFT波形
图2x2及其16点FFT波形
图3x3及其16点FFT波形
图4x4及其16点FFT波形
图5x5及其16点FFT波形
图6x6及其32点FFT波形
图7x7及其8点,16点FFT波形
图8x8及其8点,16点FFT波形
六、思考题
(1)在N=8时,x2(n)和x3(n)的幅频特性会相同吗?
为什么?
N=16呢?
答:
N=8时相同,因为x2(n)和x3(n)本身都是8点序列,它们的波形周期延拓之后只是有个时间延后,其它都一样,做出来的8点FFT相同;N=16时,不同,因为它们的波形周期延拓后取主值区间的序列是不同的。
(2)如果周期信号的周期预先不知道,如何用FFT进行谱分析?
答:
设一个定长序列长度m值,先取2m,看2m/m的误差是否大,如大的话再取4m,看4m/2m的误差是否大,如不大,4m(4倍的m值)则可近似原来点的谱分析。