欢迎来到天天文库
浏览记录
ID:32657840
大小:310.28 KB
页数:19页
时间:2019-02-14
《fft及信号的谱分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验九FFT及信号的谱分析一、实验目的1.通过实验加深对FFT的理解,熟悉FFT程序、结构及编程方法。2.熟练应用FFT对典型信号进行谱分析的方法。3.了解应用FFT进行信号频域分析可能出现的问题以便在实际屮正确应用FFT。4.理解FFT与IFFT的关系。5.熟悉应用FFT实现两个序列的线性卷积的方法。二、实验原理及方法在各种信号序列中,有限长序列信号处理占有很重耍的位置,对有限长序列,我们可以使用离散Fourier变换(DFT)。这一变换不但可以很好地反映序列的频谱特性,而且已永快速算法在计算机上实现,当序列x(n)的长度为N时,它的DFT定义为:N7互X伙)=DFT[x{n)
2、]=工班“)妙了,炉v=e“刀=01」V-1x(〃)=IDFT[X伙)]=飞工X(k)W貴N禺(一)、在利用DFT进行频谱分析吋可能会出现三种误差。(1)混叠为了利用计算一个连续信号的频谱,首先需要对这个连续信号进行取样,如果取样率太低,也即抽样周期太大,在频域内将产生混叠现象,这样就不可能无失真的恢复原连续信号。对带限信号,当所处理模拟信号最高频率m与抽样频率fs满足f.、2fh时就不会出现频谱混叠现象。(2)泄漏实际信号序列往往很长,甚至是无限长序列。为了方便,我们往往用截短的序列来近似他们。这样可以使用较短的DFT来对信号进行频谱分析。对序列xn截短的过程就是将原信号序列与
3、矩形窗函数相乘的过程,在频域就是两者频谱的卷积。一般情况卞这样都会造成由此得到的频谱不同于信号原来的频谱,这种现象叫做泄漏。在实际应用屮,可以选用频谱主瓣小、旁瓣小、尽量接近于窗函数来减少泄漏。泄漏不能与混叠完全分开,因为泄漏导致频谱的扩展,从而造成混叠。为了减少泄漏影响,可以选择适当的窗函数是频谱的扩散减至最小。(3)栅栏效应DFT是对单位园上z变换的均匀取样,所以它不可能将频谱视为一个连续函数。这样就产生了栅栏效应。就一定的意义上看,用DFT来观看频谱就好像通过一个尖桩的栅栏来观看一个图景一样,只能在离散点上看到真实的频谱。这样就有可能发生一些频谱的峰点或谷点被“尖桩的栅栏”
4、所挡住,不能被我们观察到。减小栅栏效应的一个方法是借助于原列的末端增加一些零值,从而变动DFT的点数。这一方法实际上是人为的改变了对真实频谱采样的点数和位置,相当于搬动了每一根“尖桩栅栏”的位置,从而使得原来看不到的频谱的峰点或谷点就有可能看到了。IFFT一般可以通过FFT程序来完成,只要对X[k]取共轨,进行FFT运算,然后再取共辘,并乘以因子1/N,就可以完成IFFT。实验屮用到的信号序列:a)Gaussian序列(”)=5、算x(n)=Rn(8)的傅里叶变换exp(jw),并比较三种程序计算机运行时间。(1)用forloop语句的M函数文件dftl.m,用循环变量逐点计算X(k);(2)编写用MATLAB矩阵运算的M函数文件dft2.m,完成下列矩阵运算;(3)调用FFT库函数,直接计算X(k);(4)分别利用上述三种不同方式编写的DFT程序计算序列x(n)的傅立叶变换exp(jw),并画出相应的幅频和相频特性,再比较各个程序的计算机运行时间。(1H弋帀马:dftl(x)function[Am,pha]=dftl(x)n=0:9;N=length(x);w=exp(・j*2*pi/N);x=[one6、s(l/8)/zeros(l/2)];fork=1:N%x=stepseq(0,0,7);sum=0;subplot(311)forn=1:Nstem(n,x);sum=sum+x(n)*wA((k-l]*(n-l));end[Am,pha]=dftl(x);Am(k)=abs(sum);pha(k)=angle(sum);subplot(312)endstem(Am);代码:clc;subplot(313)elf;stem(pha);clear;图形:0.50(2)代码:dft2(x)function[Am’pha]=dft2(x)N=length(x);n=[0:N-l];k7、=[0:N-l];w=exp(・j*2*pi/N);nk=n'*k;wnk=w.A(nk);Xk=x*wnk;Am=abs(Xk);pha=angle(Xk);代码:clc;elf;clear;图形:n=0:9;x=[ones(l/8),zeros(l/2}];%x=stepseq(0,0,7);subplot(311)stem(n,x);[Am,pha]=dft2(x);subplot(312)stem(Am);subplot(313)stem(pha);55€5€?€53€
5、算x(n)=Rn(8)的傅里叶变换exp(jw),并比较三种程序计算机运行时间。(1)用forloop语句的M函数文件dftl.m,用循环变量逐点计算X(k);(2)编写用MATLAB矩阵运算的M函数文件dft2.m,完成下列矩阵运算;(3)调用FFT库函数,直接计算X(k);(4)分别利用上述三种不同方式编写的DFT程序计算序列x(n)的傅立叶变换exp(jw),并画出相应的幅频和相频特性,再比较各个程序的计算机运行时间。(1H弋帀马:dftl(x)function[Am,pha]=dftl(x)n=0:9;N=length(x);w=exp(・j*2*pi/N);x=[one
6、s(l/8)/zeros(l/2)];fork=1:N%x=stepseq(0,0,7);sum=0;subplot(311)forn=1:Nstem(n,x);sum=sum+x(n)*wA((k-l]*(n-l));end[Am,pha]=dftl(x);Am(k)=abs(sum);pha(k)=angle(sum);subplot(312)endstem(Am);代码:clc;subplot(313)elf;stem(pha);clear;图形:0.50(2)代码:dft2(x)function[Am’pha]=dft2(x)N=length(x);n=[0:N-l];k
7、=[0:N-l];w=exp(・j*2*pi/N);nk=n'*k;wnk=w.A(nk);Xk=x*wnk;Am=abs(Xk);pha=angle(Xk);代码:clc;elf;clear;图形:n=0:9;x=[ones(l/8),zeros(l/2}];%x=stepseq(0,0,7);subplot(311)stem(n,x);[Am,pha]=dft2(x);subplot(312)stem(Am);subplot(313)stem(pha);55€5€?€53€
此文档下载收益归作者所有