信号的频谱分析及matlab实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
DFT是在时域和频域上都已离散的傅里叶变换,适于数值计算且有快速算法,是利用计算机实现信号频谱分析的常用数学工具。文章介绍了利用DFT 分析信号频谱的基本流程,重点阐述了频谱分析过程中误差形成的原因及减小分析误差的主要措施。实例列举了MATLAB环境下频谱分析的实现程序。通过与理论分析的对比,解释了利用DFT分析信号频谱时存在的频谱混叠、频谱泄漏及栅栏效应,,并提出了相应的改进方法。
关键词:语音信号处理MATLAB 频谱分析语音合成
关键词:频谱分析;离散傅里叶变换;频谱混叠;频谱泄漏;栅栏效应
目录
摘要 (1)
目录 (2)
第1章引言 (3)
第2章MATLAB简介 (3)
第3章分析流程 (4)
第4章分析误差 (5)
4.1混叠现象 (5)
4.2截断效应 (5)
4.3栅栏效应 (6)
第5章分析实例 (7)
结束语 (10)
参考文献 (10)
第1章引言
信号的频谱分析就是利用傅里叶分析的方法,求出与时域描述相对应的频域描述,从中找出信号频谱的变化规律,以达到特征提取的目的[1]。不同信号的傅里叶分析理论与方法,在有关专业书中都有介绍,但实际的有待分析信号一般没有解析式,直接利用公式进行傅里叶分析非常困难。DFT是一种时域和频域均离散化的傅里叶变换,适合数值计算且有快速算法,是分析信号的有力工具。本文以连续时间信号为例,介绍利用DFT分析信号频谱的基本流程,重点阐述频谱分析过程中可能存在的误差。实例列出MATLAB环境下频谱分析的实现程序。
第2章matlab简介
MATLAB是美国Math Works公司推出的一种面向工程和科学计算的交互式计算软件,它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个简单易用的交互式工作环境中。同时由于MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。
MATLAB是解决工程技术问题的技术平台。利用它能够轻松完成复杂的数值计算,数据分析,符号计算和数据可视化等任务。MATLAB软件由主包和各类工具箱构成。其中,主包基本是一个用C/C++等语言编写成的函数库。该函数库提供矩阵(或数组)的各种算法以及建立在此基础上的各种应用函数和一些相关的用户有好操作界面。而工具箱从深度和广度上大大扩展了MATLAB主包的功能和应用领域。随着自身的不断完善和发展,MATLAB 功能越来越强大,应用也越来越广泛。
随着计算机技术和信息技术的发展,语音交互已经成为人机交互的必要手段,而语音信号的采集和处理是人机交互的前提和基础。声卡是计算机对语音信号进行加工的重要部件,它具有对信号滤波、放大、采样保持、A/D 和D/A转换等功能。尽管在Windows附件的娱乐中带有一个录音机,通过它
可以驱动声卡采集语音信号并保存为语音文档。但是要对采集的信号进一步分析处理就必须另外编程或通过其它软件,而且Windows附件中的录音机功能极其有限且不能扩展。MATLAB是美国Math Works公司推出的一种面向工程和科学计算的交互式计算软件,它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个简单易用的交互式工作环境中。在MATLAB环境中,可以通过多种编程方法驱动声卡,实现对语音信号的采集和回放。同时由于MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。
第3章分析流程
实际信号一般没有解析表达式,不能直接利用傅里叶分析公式计算频谱,虽然可以采用数值积分方法进行频谱分析,但因数据量大、速度慢而无应用价值。。DFT在时域和频域均实现了离散化,适合数值计算且有快速算法,是利用计算机分析信号频谱的首选工具。由于DFT要求信号时域离散且数量有限,如果是时域连续信号则必须先进行时域采样,即使是离散信号,如果序列很长或采样点数太多,计算机存储和DFT计算都很困难,通常采用加窗方法截取部分数据进行DFT运算。对于有限长序列,因其频谱是连续的,DFT 只能描述其有限个频点数据,故存在所谓栅栏效应。总之,用DFT分析实际信号的频谱,其结果必然是近似的。即使是对所有离散信号进行DFT变换,也只能用有限个频谱数据近似表示连续频谱;如果对离散信号进行了加窗处理,则会因截断效应产生吉伯斯现象;倘若是连续信号,则还会出现频谱混叠。但如果合理选择参数,分析误差完全可以控制在允许范围内,利用DFT 分析信号的频谱在工程上是完全可行的[2]。分析信号频谱的基本流程如图 1 所示。
LPF A/D DFT
xw(n)x(k)
x(t)x’(t)x(n)
w(n)
图(1)
第4章分析误差
利用DFT(实际是用FFT)对连续或离散信号进行频谱分析时,如果信号连续一般要进行采样和截断,即使信号离散也往往需要进行加窗截断。用有限的离散数据进行DFT 变换,得到有限个DFT 数据值,与原信号的频谱肯定不同,这种不同就是分析误差。下面按信号频谱分析的基本流程,分别介绍误差形成的原因及减小分析误差的主要措施,为实际分析过程中适当选择参数提供理论依据。
4.1混叠现象
对连续信号进行频谱分析时,先要对信号进行采样,理论上要求采样频f必须大于两倍信号的最高频率[3]。在满足采样定理条件下,采样序列的率
s
数字频谱能准确反映连续信号的模拟频谱,否则会发生频谱混叠现象。严格地讲,实际信号的持续时间有限、频谱无限,为了尽可能减少频谱混叠,信号在采样之前一般都要进行预滤波处理。预滤波也不可能是理想低通,所以频谱混叠不可避免。在实际工作中,为了减小频谱混叠的影响,可通过适当提高防混叠滤波器的指标和适当增大采样频率来实现,采样频率常取信号最高频率的2.5~3倍。各类连续信号采样频率的选取原则与方法可参考文[2]。
4.2截断效应
利用计算机对离散序列或连续信号的采样序列进行DFT 运算时,往往要进行截断,即将离散序列进行加窗处理。对离散序列的加窗实际上是将离散序列与窗函数相乘,加窗后信号的频谱是加窗前信号的频谱与窗函数频谱的卷积,造成截断后信号的频谱与截断前信号的频谱不同,这就是所谓截断效应。截断效应对频谱分析的影响主要表现在两个方面: