FFT频谱分析1

  • 格式:doc
  • 大小:408.50 KB
  • 文档页数:9

目 录 第一章 设计任务及要求 ............................................................. 1 第二章 设计思路 ................................................................... 2 1 本文研究内容 ................................................................ 1 2 频谱分析技术 ................................................................. 2 2.1 时域抽样定理[7] ........................................................................................................ 2 2.2 离散傅立叶变换(DFT)[8] ........................................................................................ 2 2.3 快速傅立叶变换(FFT)[9] ........................................................................................ 2 2.4 频谱分析原理[10] ....................................................................................................... 3 3 程序与算例 ..................................................................................................................... 3 3.1 声音信号频谱分析 ......................................................... 4 3.2 图像信号频谱分析 ......................................................... 7 3.3 本章小结 ................................................................. 7 结 论 ....................................................................................................................................... 8 1

第一章 设计任务及要求 1. 要求独立完成设计任务。 2. 课程设计说明书封面格式要求见《天津城市建设学院课程设计教学工作规范》附表1 3. 课程设计的说明书要求简洁、通顺,计算正确,图纸表达内容完整、清楚、规范。 4. 运行程序,观察并保存程序运行结果,能够对运行结果进行结果分析。 5. 课设说明书要求: 1) 说明题目的设计原理和思路、采用方法及程序。 2) 详细说明调试方法和调试过程,并给程序加注释。 3) 给出程序运行结果,并对其进行说明和分析。

第二章 设计思路 1 本文研究内容 信号的频谱分析就是利用傅里叶分析的方法,求出与时域描述相对应的频域描述,从中找出信号频谱的变化规律,以达到特征提取的目的。不同信号的傅里叶分析理论与方法,在有关专业书中都有介绍。 但实际的待分析信号一般没有解析式,直接利用公式进行傅里叶分析非常困难. DFT是一种时域和频域均离散化的傅里叶变换,适合数值计算且有快速算法,是分析信号的有力工具。 DFT及FFT是数字信号处理的重要内容。DFT是FFT的基础,FFT是DFT的快速算法,在 MAT LAB中可以利用函数 FFT来计算序列的离散傅里叶变换DFT。基于此首先介绍了Matlab软件;其次给出了基于Matlab软件的DFT和 FFT频谱分析的方法,利用 Matlab软件方法,使得设计方便、快捷,大大减轻了工作量;最后结合实例给出了仿真结果。 本文将重点介绍基于MATLAB的频谱分析设计,包括: (3) 离散信号/序列频谱分析 (1) 音频信号频谱分析; 2

2 频谱分析技术 2.1 时域抽样定理[7] 时域抽样定理给出了连续信号抽样过程中信号不失真的约束条件:对于基带信号,信号抽样频率samf大于等于2倍的信号最高频率mf,即2sammff。时域抽样是把连续信号Xt变成适于数字系统处理的离散信号kX。对连续信号Xt以间隔T抽样,则可得到的离散序列为kXXkTtkT。 x(t)

x[k]t

k0T2T

012 图2-1 连续信号抽样的离散序列 若kXXkTtkT,则信号Xt与kX的频谱之间存在:

jsam1(e)j()nXXnT



其中,j(e)X的频谱为(j)X,kX的频谱为j(e)X。 可见,信号时域抽样导致信号频谱的周期化。2/samT(rad/s)为抽样角频率,1samfT为抽样频率。数字角频率Ω与模拟角频率ω的关系为:Ω=ωT。 2.2 离散傅立叶变换(DFT)[8] 有限长序列)(nx的离散傅立叶变换(DFT)为

10,)()]([)(10NnWnxnxDFTkXNnkn

N

逆变换为

10,)(1)]([)(10NnWkXNkXIDFTnxNnkn

N

2.3 快速傅立叶变换(FFT)[9] 在各种信号序列中,有限长序列占重要地位。对有限长序列可以利用离散傅立叶变换(DFT)进行分析。DFT不但可以很好的反映序列的频谱特性,而且易于用快速算法(FFT)在计算机上进行分析。 有限长序列的DFT是其z变换在单位圆上的等距离采样,或者说是序列傅立叶的等距离采样,因此可以用于序列的谱分析。FFT是DFT的一种快速算法,它是对变换式进行一次次分解,使其成为若干小数据点的组合,从而减少运算量。 MATLAB为计算数据的离散快速傅立叶变换,提供了一系列丰富的数学函数,主 3

要有Fft、Ifft、Fft2 、Ifft2, Fftn、ifftn和Fftshift、Ifftshift等。当所处理的数据的长度为2的幂次时,采用基-2算法进行计算,计算速度会显著增加。所以,要尽可能使所要处理的数据长度为2的幂次或者用添零的方式来添补数据使之成为2的幂次。 Fft函数调用方式:○1Y=fft(X); ○2Y=fft(X,N); ○3Y=fft(X,[],dim)或Y=fft(X,N,dim)。 函数Ifft的参数应用与函数Fft完全相同。 2.4 频谱分析原理[10]

时域分析只能反映信号的幅值随时间的变化情况,除单频率分量的简单波形外,很难明确提示信号的频率组成和各频率分量大小,而频谱分析能很好的解决此问题。由于从频域能获得的主要是频率信息,所以本节主要介绍频率(周期)的估计与频谱图的生成。 1、频率、周期的估计 对于Y(kΔf),如果当kΔf = f时,Y(kΔf)取最大值,则f为频率的估计值,由于采样间隔的误差,f也存在误差,其误差最大为Δf / 2。 周期T=1/f。 从原理上可以看出,如果在标准信号中混有噪声,用上述方法仍能够精确地估计出原标准信号的频率和周期,这个将在下一章做出验证 2、频谱图 为了直观地表示信号的频率特性,工程上常常将Fourier变换的结果用图形的方式表示,即频谱图。 以频率f为横坐标,|Y(f)|为纵坐标,可以得到幅值谱; 以频率f为横坐标,arg Y(f)为纵坐标,可以得到相位谱; 以频率f为横坐标,Re Y(f)为纵坐标,可以得到实频谱; 以频率f为横坐标,Im Y(f)为纵坐标,可以得到虚频谱。 根据采样定理,只有频率不超过Fs/2的信号才能被正确采集,即Fourier变换的结果中频率大于Fs/2的部分是不正确的部分,故不在频谱图中显示。即横坐标f ∈[0, Fs/2]

3 程序与算例

1.模拟信号()2sin(4)5cos(8)xttt,以0.01(0:1)tnnN进行采样,求N=128点FFT的幅度频谱;下面是对x(t)程序代码:

%***************1.ÕýÏÒ²¨****************% fs=100;%É趨²ÉÑùƵÂÊ N=128; n=0:N-1; t=n/fs; 4

f0=2;%É趨ÕýÏÒÐÅºÅÆµÂÊ %Éú³ÉÕýÏÒÐźŠf1=4; x=sin(2*pi*f0*t)+sin(2*pi*f0*t)+cos(2*pi*f1*t)+cos(2*pi*f1*t)+cos(2*pi*f1*t)+cos(2*pi*f1*t)+cos(2*pi*f1*t); figure(1); subplot(2,3,1); plot(t,x);%×÷ÕýÏÒÐźŵÄʱÓò²¨ÐÎ xlabel('t'); ylabel('y'); title('ÕýÏÒÐźÅy=2*pi*2tʱÓò²¨ÐÎ'); grid; %½øÐÐFFT±ä»»²¢×öƵÆ×ͼ y=fft(x,N);%½øÐÐfft±ä»» mag=abs(y);%Çó·ùÖµ f=(0:length(y)-1)'*fs/length(y);%½øÐжÔÓ¦µÄƵÂÊת»» figure(1); subplot(2,3,2); plot(f,mag);%×öƵÆ×ͼ axis([0,100,0,350]); xlabel('ƵÂÊ(Hz)'); ylabel('·ùÖµ'); title('ÕýÏÒÐźÅy=2*pi*2t·ùƵÆ×ͼN=128'); grid;

3.1 声音信号频谱分析 Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件, 它可以将声音文件变换为离散的数据文件, 然后利用其强大的矩阵运算能力处理数据, 如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种分析图的呈现等等。 下面以语音信号的波形图、频谱图和倒谱图分析为例来说明Matlab在语音信号处理中的具体实现方法。