果为f = 158.9498Hz,频域分析的结果为f = 200.391Hz,而标准信号的频率为200Hz,从而对于带噪声的正弦信号频域分析的精度远高于时域分析的精度。
图 5 带噪声的正弦信号的频率估计
4.2 结果分析与结论
在时域,频率估计是使用过零检测的方式计算出,从而对于带噪声的信号既容易造成“误判”,也容易造成“漏判”,且噪声信号越明显,“误判”与“漏判”的可能性越大。但在没有噪声或噪声很小时,时域分析对每个周期长度的检测是没有累积误差的,故随着样本容量的增大,估计的精度大大提高。
在频域,频率估计是通过找出幅值谱峰值点对应的频率求出。故不会有时域分析的问题。但频率离散化的误差及栅栏效应却是不可避免地带来误差,仅频率离散化的误差就大于Fs/2。
由实验结果及以上的分析可以得出结论:在作频率估计时,如果信号的噪声很小,采用时域分析的方法较好;如果信号的噪声较大,采用频域分析的方法较好。
5.总结与展望 5.1总结
本文给出了基于MATLAB的声音信号频谱分析仪的设计原理与实现方法,在原理部分,从时域和频域两个方面提供了信号分析所需要的算法流程及计算公式,在原理的最后还结合软件工程理论给出了软件的模块划分,这样在基于此设计原理的基础上可以用任何平台任何语言进行软件开发。在实现方法上,结合软件的界面和具体的代码讲述了整个软件编码实现的原理。最后结合一个运行实例比较了时域分析与频域分析计算频率的异同之处,并分析了误差的原因。
尽管MATLAB有强大的数学函数库,使得编程时间大大缩短,但MATLAB有它固有的缺陷,如运行速度太慢,因为它是解释型语言,而且运行依赖了MATLAB软件,无法发布为商用软件,另外在控制用户输入上也比较难以实现。这些缺陷也导致了用MATLAB所开发的软件有这些缺陷。
5.2展望
对于该软件,还有许多可以改进的地方。MATLAB做界面时难以控以用户的错误输入,但可以通过添加适当的判断语句提示用户的错误输入。对于软件运行依赖于MATLAB的问题,可以通过MATLAB与VC混合编程的方式解决,VC是
Windows平台下主要的应用程序开发环境之一,它能方便实现软件开发,开发的系统具有界面友好、执行速度快、易维护和升级等优点,故两者的结合能提高开发效率而不损软件性能。
参考文献