1 / 11
文档名称:

频谱分析.doc

格式:doc   大小:143KB   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

频谱分析.doc

上传人:镜花流水 2019/3/13 文件大小:143 KB

下载得到文件列表

频谱分析.doc

文档介绍

文档介绍:Forpersonaluseonlyinstudyandresearch;mercialuse课程名称:数字信号处理实验项目:用FFT作频谱分析指导教师:王丽专业班级:10电子本姓名:孟宪娇学号:2062成绩:实验目的:在理论学****的基础上,通过本实验,加深对FFT的理解,熟悉MATLAB中的有关函数。熟悉应用FFT对典型信号进行频谱分析的方法。熟悉FFT算法原理和FFT子程序的应用。学****用FFT对连续信号和时域离散信号进行谱分析的方法。了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT。实验原理:(一)、在各种信号序列中,有限长序列信号处理占有很重要地位,对有限长序列,我们可以使用离散傅里叶变换(DFT)。这一变换不但可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列x(n)的长度为N时,它的DFT定义为:反变换为:有限长序列的DFT是其Z变换在单位圆上的等距采样,或者说是序列Fourier变换的等距采样,因此可以用于序列的谱分析。在信号处理中,DFT的计算具有举足轻重的地位,,信号的相关、滤波、谱估计等都要通过DFT来实现。然而,当很大的时候,求一个点的DFT要完成次复数乘法和次复数加法,其计算量相当大。1965年,构造了一个DFT快速算法,即快速傅立叶变换(FFT)。   FFT并不是与DFT不同的另一种变换,而是为了减少DFT运算次数的一种快速算法。它是对变换式进行一次次分解,使其成为若干小点数的组合,从而减少运算量。常用的FFT是以2为基数的,其长度。它的效率高,程序简单,使用非常方便,当要变换的序列长度不等于2的整数次方时,为了使用以2为基数的FFT,可以用末位补零的方法,使其长度延长至2的整数次方。(二)、在运用DFT进行频谱分析的过程中可能的产生混叠误差   序列的频谱是被采样信号频谱的周期延拓,当采样速率不满足Nyquist定理时,就会发生频谱混叠,使得采样后的信号序列频谱不能真实的反映原信号的频谱。避免混叠现象的唯一方法是保证采样速率足够高,使频谱混叠现象不致出现,即在确定采样频率之前,必须对频谱的性质有所了解,在一般情况下,为了保证高于折叠频率的分量不会出现,在采样前,先用低通模拟滤波器对信号进行滤波。(三)、matlab函数应用:MATLAB为计算数据的离散快速傅立叶变换,提供了一系列丰富的数学函数,主要有Fft、Ifft、Fft2、Ifft2,Fftn、ifftn和Fftshift、Ifftshift等。当所处理的数据的长度为2的幂次时,采用基-2算法进行计算,计算速度会显著增加。所以,要尽可能使所要处理的数据长度为2的幂次或者用添零的方式来添补数据使之成为2的幂次。fft和Ifft函数(1)调用方式:Y=fft(X)参数说明·如果X是向量,则采用傅立叶变换来求解X的离散傅立叶变换;·如果X是矩阵,则计算该矩阵每一列的离散傅立叶变换;·如果X是(N维数组,则是对第一个非单元素的维进行离散傅立叶变换;Y=fft(X,N)参数说明N是进行离散傅立叶变换的X的数据长度,可以通过对X进行补零或截取来实现。(3)Y=fft(X,[],dim)或Y=fft(X,N,dim)参数说明·在参数dim指定的维上进行离散傅立叶变换;·当X为矩阵时,dim用来指定变换的实施方向:dim=1,表明变换按列进行;dim=2表明变换按行进行。函数Ifft的参数应用与函数Fft完全相同。Fftshift和Ifftshift函数调用方式Z=fftshift(Y)此函数可用于将傅立叶变换结果Y(频域数据)中的直流成分(即频率为0处得值)移到频谱的中间位置。三|、实验内容:对被白噪声污染的信号进行频谱分析,从中鉴别出有用的信号。要求:将信号的幅度换算成实际的幅度,信号的频率换算成实际的频率程序对连续的单一频率周期信号,,信号频率f=1Hz按采样频率fs=8Hz采样,截取长度N分别选N=20和N=16,观察其DFT结果的幅度谱。并从中得出什么结论?程序,进行频谱分析设n=16。四、实验结果:1、程序:clear;fs=512;%采样频率N=512;%数据点数n=0:N-1;t=0:1/fs:(N-1)/fs;%采样时间序列f0=100;%信号频率x=2+3*cos(100*pi*t-pi/6)+*cos(150*pi*t+pi/2)+randn(1,N);subplot(3,1,1);plot(t,x);xlabel('t');ylabel('sin(2*pi*100*t)');title('时域信号');Y=fft(x,N);%对信号进行FFT变换magY=abs(Y);%求得FFT变换后的幅度magY=magY/(N/2);magY(1)=magY(1)/2;angY=angle(Y