基于MATLAB的实时声信号与谱分析设计毕业论文.docx
- 文档编号:26992888
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:38
- 大小:515.88KB
基于MATLAB的实时声信号与谱分析设计毕业论文.docx
《基于MATLAB的实时声信号与谱分析设计毕业论文.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的实时声信号与谱分析设计毕业论文.docx(38页珍藏版)》请在冰豆网上搜索。
基于MATLAB的实时声信号与谱分析设计毕业论文
毕业设计说明书
基于Matlab的实时声信号采集与谱分析设计
学生姓名:
学号:
学院:
系名:
专业:
指导教师:
2011年6月
Gatherandanalyzethedesignwiththetableinacousticalsignal
basedonMATLAB
Abstract
Inthispaperwilldiscusstheprinciplesoffrequencyanalysis,analysisoftheclassicalandthemodernspectralandtheadvantageanddisadvantageofthem,specificallycomparePeriodogram,BartlettwithWelchalgorithm.AndthenusingMATLABtorealizationofthefrequencyofacousticsignalanalysis,contrastadvangeanddisadvangevisually.ThedatawhichwillbecollectedthroughserialhasreadbackandspectralanalysisundertheenvironmentofMATLAB.Usingthismethodtheacousticsignalacquisitionandspectralanalysissystemhasthestrongandreal-timeprocessingspeedadvantage.
Keywords:
DSP,spectralanalysis,spectralestimation,andMATLAB
基于Matlab的实时声信号采集与谱分析设计
摘要
本文介绍了基于MATLAB的声信号采集与谱分析的设计过程,在阐述频率分析及功率谱估计原理的基础上,分析了经典功率谱估计和现代功率谱估计的两大类算法,主要采用了经典功率谱估计的周期法,间接法和改进的周期法及现代功率谱估计的AR模型参数法对声信号进行谱分析,并通过大量试验对各种算法进行验证对比。
该设计利用串口将采集到的声信号上传,并在MATLAB环境下进行谱分析,用此方法实现的声信号采集与谱分析系统,具有实时性强、处理速度快点优点。
关键词:
DSP,频谱分析,功率谱估计,MATLAB
1绪论
1.1数字信号处理的简介及发展状况
数字信号处理(DigitalSignalProcessing,简称DSP)是将信号以数字方式表示并处理的理论和技术。
它是一门涉及众多学科而又广泛应用于多个领域的新兴学科。
20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
DSP数字信号处理是一种通过使用数学技巧执行转换或提取信息来处理现实信号的方法。
它的核心算法是离散傅立叶变换(DFT),DFT使信号在数字域和频域都实现了离散化,从而可以用通用计算机处理离散信号。
而使数字信号处理从理论走向实用的是快速傅立叶变换(FFT),FFT的出现大大减少了DFT的运算量,使实时的数字信号处理成为可能,极大促进了该学科的发展[1]。
DSP(数字信号处理器)是一种高速专用的微处理器,DSP芯片建立在数字信号处理的各种理论和算法基础上,专门完成各种实时数字信息处理,DSP系统所选用的算法是经过各种实践检验的通用算法的组合和改进而来,它的运算功能强大,专门处理以运算为主,不允许延迟的实时信号;它有特殊的寻址方式,可高效的进行FFY运算;灵活的输入输出接口和片内输入输出管理;有高速的并行数据处理算法的优化指令集,修改,升级都很方便;灵活的使用C语言或汇编语言编程;集成化程度高,成本低,可靠性好,硬件简化,有完整的开发和调试工具,开发周期短[2]。
其应用领域也由最初的军用的尖端产品扩展到计算机、通信、家电、办公自动化、仪器仪表、汽车电子等各个领域,发展速度快,应用实效之大,是目前任何一种器件不能与之相提并论的。
在当今的数字化时代快速发展的背景下,DSP已成为通信、计算机、消费类电子产品等领域的基础器件,被誉为信息社会革命的旗手。
DSP将是未来集成电路中发展最快的电子产品,并成为电子产品更新换代的决定因素,它将彻底变革人们的工作、学习和生活方式[2]。
1.2频谱分析的发展现状及趋势
信号分析主要包括时域分析和频域分析。
谱分析就是频域分析,具体是指将信号源发出的信号强度按频率顺序展开,使其成为频率的函数,并考察变化规律。
频谱分析在生产实践和科学研究中获得日益广泛的应用。
例如,对汽车、飞机、轮船、汽轮机等各类旋转机械、电机、机床等机器的主体或部件进行实际运行状态下的谱分析,可以提供设计数据和检验设计效果,或者寻找振源和诊断故障,保证设备的安全运行等;在声纳系统中,为了寻找海洋水面船只或潜艇,需要对噪声信号进行谱分析,以提供有用信息,判断舰艇运动速度、方向、位置、大小等。
因此对谱分析方法的研究,受到人们的普遍注意和重视,是当前信号处理技术中一个十分活跃的课题。
1965年库利一图基在《计算数学》杂志上发表快速傅里叶变换(FFT)算法,FFT和频谱分析很快发展成为机械设备故障诊断、振动分析、无线电通信、信息图像处理和自动控制等多种学科重要的理论基础。
然而长期的应用和近年来的理论分析表明:
经快速傅立叶变换得到的离散频谱,频率、幅值和相位均可能产生较大误差,单谐波加矩形窗时最大误差从理论上分析可达36.4%;即使加其他窗时,也不能完全消除此影响,在加Hanning窗时,只进行幅值恢复时的最大幅值误差仍高达15.3%,相位误差高达
90度。
因此,频谱分析的结果在许多领域只能定性而不能精确的定量分析和解决问题,大大限制了该技术的工程应用,特别是在机械振动和故障诊断中的应用受到极大限制。
从上世纪70年代中期,有关学者开始致力于频谱校正理论的研究以期解决离散频谱误差较大的问题,通过加窗、局部细化、多点卷积幅值修正等方法来提高频率识别精度,解决了离散高次谐波参数的精确测量等问题[3]。
从目前国内外学者所进行的大量研究工作来看,主要是对单频率信号(或频率间隔较大的多频率信号)离散频谱的自动识别和校正方法进行探讨,密集频率的校正也只限于两个邻近频率成分的校正,未能深入到连续频率成分频谱的误差和校正方法的研究。
而实际工程中的很多信号是密集频率成分或连续频率成分的信号,比如“拍振”信号是最简单的密集频率信号。
在旋转机械、故障诊断和非线性动力系统分析中,常常也会出现密集频谱现象。
在有限样本长度下,仅仅由此类信号的FFT频谱很难识别其频率构成,也不能确定其各频率的参数。
而且由于旁瓣泄露或主瓣干涉的影响,基于单频率信号频谱校正的比值法不再适合此类多频信号。
对此类信号在进行离散频谱分析时所产生误差的分析方法与频率间隔较大的信号误差分析方法存在巨大差异,校正方法也不相同,校正的难度极大。
因此,只有对这类信号在进行离散傅里叶变换时所产生的误差进行深入系统的分析与研究,并找到一种较完善的频率、幅值和相位的校正方法,才能使离散傅里叶变换和频谱分析在机械工程中得到更广泛应用,同时也扩大其在无线电通信、信息图像处理、自动控制、多媒体、机械设备故障诊断等技术的应用范围[4]。
当前,具有密集频谱的频谱校正问题是目前频谱校正技术最难解决的问题之一,成为工程界和研究离散频谱校正的学者们关注的焦点。
1.3本设计的主要任务
本设计的原理框图如图1.1所示,首先通过传感器采集目标声信号,声信号进入DSP芯片TMS320F2812内部的AD转换器实现模数转换,之后数据通过串口实时上传至计算机运用Matlab软件进行频谱和功率谱分析。
本设计的主要任务是通过串口把实时采集的数据传至计算机后,在MATLAB环境下将数据读回并实现信号的频谱分析。
本设计主要研究了各种频谱分析算法实现后的效果图,直观比较不同的算法的不同效果。
其中包括经典功率谱分析和现代功率谱分析。
经典谱估计是将数据工作区外的未知数据假设为零,相当于数据加窗,主要方法有直接法,间接法和改进的直接法。
现代谱估计是通过观测数据估计参数模型再按照求参数模型输出功率的方法估计信号功率谱,主要是针对经典谱估计的分辨率低和方差性能不好等问题提出的,主要的参数模式是自回归(AR)模型、移动平均(MA)模型和自回归/移动平均(ARMA)模型,其中AR模型由线性方程描述,而MA和ARMA模型则由非线性方程描述。
由于MA和ARMA模型均可用高阶的AR模型来近似,本文使用的是AR参数模型。
2声信号的采集及传输
2.1TMS320F2812的概述
TMS320F2812是美国TI公司推出的C2000平台上的定点32位DSP芯片,主频150MHZ、处理性能可达150MIPS,每条指令周期6.67ns。
TMS320F2812采用哈佛总线结构,具有统一的存储模式,包括4M可寻址程序空间和4M可寻址数据空间。
同时片内具有128×16位的FLASH存储器和18K×16位的SRAM,以及4K×16位的引导ROM。
最大支持外扩512K×16位的SRAM和512K×16位的FLASH。
具有两个事件管理器(EVA、EVB)以及外设中断模块(PIE),最大支持96个外部中断。
TMS320F2812的外部存储器接口(XINTF)被映射到5个独立的存储空间[5]。
图2.1F2812功能组成框图
TMS320F28lx系列DSP的处理器的器件上集成了多种先进的外设,为电机及其他运动控制领域应用的实现提供了良好的平台。
同时代码和指令与F24x系列数字信号处理器完全兼容,从而保证了项目或产品设计的可延续性[6]。
与F24x系列数字信号处理器相比,F2812系列数字信号处理器提高了运算的精度(32位)和系统的处理能力(达到15OMIPS)。
该数字信号处理器还集成了128KB的Flash存储器,4KB的引导ROM,数学运算表以及ZKB的OTPROM,从而大大改善了应用的灵活性。
128位的密码保护机制有效地保护了产品的知识产权。
两个事件管理器模块为电机及功率变换控制提供了良好的控制功能。
16通道高性能12位ADC单元提供了两个采样保持电路,可以实现双通道信号同步采样。
2.2串口传输模块
本设计通过TMS320F2812内部的A/D转换器实现信号的采集,理解串口通信的原理并编写串口读数的程序,将采样结果通过串口上传到计算机。
数据的各位逐位按顺序传送称为串行通信[7]。
串行通信可分为异步传送和同步传送两种方式。
异步传送方式方式采用每个字符按照一个独立的整体进行发送,字符的间隔时间可以任意变化,即每个字符作为独立的信息单位(帧),可以随机地出现在数据流中。
所谓“异步”,就是指通信时两字符之间的间隔事先不能确定,也没有严格的定时要求。
在异步通信中,CPU与外部之间的通信遵循以下规定:
(1)字符格式。
字符格式是指字符的编码形式及规定。
例如,规定每个串行字符由4个部分组成:
1个起始位、5~8个数据位、1个奇偶校验位以及1~2个停止位。
(2)传输速率。
传输速率是指每秒钟传送的二位进制数,通常称为波特率。
国际上规定了标准波特率系列,最常用的标准波特率是:
110、300、600、1200、1800、2400、4800、9600、115200、19200波特等。
(3)字符速率。
字符速率是指每秒钟传送的字符数,它与波特率是两个相关但表达的意义不相同的概念。
例如,若异步通信的数据格式由1位起始位、8位数据位、1位奇偶位、2位停止位组成,波特率为9600b/s,则每秒钟能够最多传送9600/(1+8+1+2)=800个字符[8]。
SCI(SerialCommunicationInterface),即串行通信接口,是一个双线的异步串口,即具有接收和发送两根信号线的异步串口,一般可以看作是UART(通用异步接收/发送装置)。
SCI发送数据的速度是由波特率来决定的。
TMS320F2812的每个SCI都具有两个8位的波特率寄存器,SCIHBAUD和SCILBAUD,通过编程,可以实现达到64K不同的速率。
在进行通信的时候,双方都必须以相同的数据格式和波特率进行通信,否则通信会失败[9]。
TMS320F2812和PC机上的串口调试软件进行通信时,TMS320F2812采用了什么样的数据格式和波特率,那么串口调试软件也需要设定成相同的数据格式和波特率,反之也一样。
TMS320F2812的SCI模块支持CPU与采用NRZ(non-return-to-zero不归零)标准格式的异步外围设备之间进行数字通信。
设计时我们的SCI使用的是RS232串行接口,TMS320F2812就能和其他使用RS232接口的设备进行通信。
TMS320F2812内部的两个SCI之间,或者TMS320F2812的SCI和其他DSP的SCI之间均能实现通信。
TMS320F2812内部具有两个相同的SCI模块,SCIA和SCIB,每一个SCI模块都各有一个接收器和发送器。
SCI的接收器和发送器各具有一个16级深度的FIFO(Firstinfistout先入先出)队列,它们还都有自己独立的使能位和中断位,可以在半双工通信中进行独立的操作,或者在全双工通信中同时进行操作[10]。
根据信息的传送方向,串行通信可以分为单工、半双工和全双工三种[9]。
如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工。
如果在任意时刻,信息即可由A传到B,又能由B传到A,但只能由一个方向上的传输存在,称为半双工传输。
如果在任意时刻,线路上存在A到B和B到A的双信号传输,则称为全双工。
本次设计采用的波特率是115200bps,无校验,8个数据位,1个停止位。
图2.4显示了串口调试的界面。
图2.4串口调试窗口
3谱分析在MATLAB中的实现
在本次设计中要求对从串口接收的数据进行谱分析,由于MATLAB软件相对其他软件具有语言简洁紧凑,库函数丰富,运算符丰富,功能强劲等优点,所以本设计选择MATLAB软件进行谱分析。
3.1MATLAB软件简介
MATLAB的名称来源自MatrixLaboratory,它是一种科学计算软件,专门以矩阵的形式处理数据。
MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛应用于科学计算、控件系统、信息处理等领域的分析、仿真和设计工作,而且利用MATLAB产品的开放式结构,可以非常容易地对MATLAB的功能进行扩充,从而在不断深化对问题认识的同时,不断完善MATLAB产品以提高产品自身的竞争能力[10]。
MATLAB语言是一种基于C语言内核的工程计算语言,集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个使用方便、界面友好的用户环境。
其优点是:
可扩展性强,允许用户自行建立指定功能的M文件、开发自己的工具箱或利用现有的数百种商用Toolbox,易学易用[11]。
3.2谱分析的几种算法
信号的频谱分析是研究信号特性的重要手段之一,对于声信号,由于它一般是非平稳随机信号,通常是求其功率谱来进行频谱分析。
功率谱估计(PSD)是用有限长的数据来估计信号的功率谱,它对于认识一个随机信号或其他应用方面来讲都是非常重要的,是数字信号处理的重要研究内容之一。
功率谱估计分为经典谱估计和现代谱估计。
经典谱估计是将数据工作区外的未知数据假设为零,相当于数据加窗,主要方法有直接法和间接法;现代谱估计是通过观测数据估计参数模型再按照求参数模型输出功率的方法估计信号功率谱,主要是针对经典谱估计的分辨率低和方差性能不好等问题提出的,应用最广的是AR参数模型[12]。
本章将分别介绍经典功率谱估计中的直接法、间接法、改进算法和现代功率谱估计中的基于AR模型的几种相关算法。
3.2.1经典功率谱估计的几种典型算法
经典谱估计具有物理概念明确、算法简单的特点,是目前经常使用的谱估计方法。
在经典谱估计中,主要方法有周期图法、间接法,和直接法的改进算法Bartlett法及Welch法。
(1)周期图法
周期图法又称直接法,利用该方法得到的随机信号y(n)的功率谱是直接由傅立叶变换得到的。
傅立叶级数是对周期信号求解频域特性,傅立叶变换则是对非周期信号求解其频域信息。
一个周期信号的傅立叶级数的实质是:
把所要研究时域的周期波形分解成许多不同频率的正弦波的叠加和。
傅立叶变换可以看作是时间函数在频率域上的表示。
由傅立叶变换给出的频率域包含的信息和原函数时间域内包含的完全相同,不同的仅是信息的表示形式。
由于计算机的离散性,对一个时间连续信号进行分析要在遵守抽样定理的前提下,进行抽样。
同样,对一个时域信号进行分析时,也要在频域呈离散性,离散傅立叶变换应运而生。
综上所述:
周期图法是把随机序列y(n)的N个观测数据视为一个能量有限的序列,直接计算y(n)的离散傅立叶变换得Y(k),然后再取其幅值的平方,并除以N,作为序列y(n)真实功率谱的估计。
以下是利用直接法进行功率谱估计的MATLAB代码:
clear;
fs=1000;%采样频率
n=0:
1/Fs:
1;%产生含有噪声的序列
xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n));
window=boxcar(length(xn));%矩形窗
nfft=1024;
[Pxx,f]=periodogram(xn,window,nfft,Fs);%直接法
plot(f,10*log10(Pxx));
下面利用直接法对其信号进行分析,图3.1为原始仿真信号,图3.2为直接法求得的功率谱图:
图3.1原始仿真信号
图3.2利用直接法求得的功率谱图
这种将周期图作为功率谱估计的一个主要缺点就是频率分辨率低,这是由于周期图在计算中把观察到的有限长的N个数据以外的数据认为是零。
该方法的优点是计算效率高。
在实际的快速傅立叶变换算法的使用中还需要注意数据截断带来的谱泄漏问题以及频率离散带来的栅栏效应。
(2)间接法
间接法先由序列x(n)估计出自相关函数R(n),然后对R(n)进行傅立叶变换,便得到x(n)的功率谱估计。
以下是利用间接法进行功率谱的估计的MATLAB代码:
clear;
fs=1000;%采样频率
n=0:
1/Fs:
1;%产生含有噪声的序列
xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n));
nfft=1024;
cxn=xcorr(xn,'unbiased');%计算序列的自相关函数
CXk=fft(cxn,nfft);
Pxx=abs(CXk);
index=0:
round(nfft/2-1);
k=index*Fs/nfft;
plot_Pxx=10*log10(Pxx(index+1));
plot(k,plot_Pxx);
下面利用间接法对其信号进行分析,图3.3为原始仿真信号,图3.4为间接法求得的功率谱图:
图3.3原始仿真信号
图3.4利用间接法求得的功率谱图
(3)改进的直接法
对于直接法的功率谱估计,当数据长度N太大时,谱曲线起伏加剧,若N太小,谱的分辨率又不好,因此需要改进。
而改进的直接法主要有Bartlett算法和Welch算法[13]。
1)Bartlett平均周期图法
Bartlett平均周期图法的基本思想很简单,即将具有N个观测点的可用样本分成L=N/M个子样本,每个子样本有M个观测点,然后在每个w值上对所有子样本的周期图进行平均,一次来减小周期图中较大的波动[7]。
它的数学描述如下,设:
t=1,…,Mj=1,…,L(式3.1)
表示第j个子样本的观测值,并设
(式3.2)
表示相应的周期图。
则Bartlett方法为
(式3.3)
Bartlett方法是对长度为M的分段数据进行计算,其分辨率大约为1/M。
可见,与原始的周期图方法相比,Bartlett方法的分辨率下降了L倍。
可以证明Bartlett方法的方差减小了L倍。
选择M(或L)时可以根据经验对分辨率和方差进行折中。
以下是利用Bartlett进行功率谱的估计的MATLAB代码:
Fs=1000;
n=0:
1/Fs:
1;
xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n));
nfft=1024;
window=boxcar(length(n));%矩形窗
noverlap=0;%数据无重叠
p=0.9;%置信概率
[Pxx,Pxxc]=psd(xn,nfft,Fs,window,noverlap,p);
index=0:
round(nfft/2-1);
k=index*Fs/nfft;
plot_Pxx=10*log10(Pxx(index+1));
plot_Pxxc=10*log10(Pxxc(index+1));
figure
(1)
plot(k,plot_Pxx);
pause;
figure
(2)
plot(k,[plot_Pxxplot_Pxx-plot_Pxxcplot_Pxx+plot_Pxxc]);
下面利用Bartlett对其信号进行分析,图3.5为原始仿真信号,图3.6为Bartlett求得的功率谱图:
图3.5原始仿真信号
图3.6利用Bartlett法求得的一信号的功率谱图
基于上述讨论有下面的结论:
Bartlett与基本周期图相比,它的分辨率降低了,方差也下降了。
2)Welch平滑平均周期图法
目前在工程实际中,经典谱估计获得广泛应用的是1967年由Welch提出的修正周期图法[14]。
该方法综合了Bartlett改进周期图法的优点,是通过先对数据分段加窗处理,然后再求平均的方法进行的。
Welch法对Bartlett法进行了两方面的修正,一是选择适当的窗函数w(n),并在周期图计算前直接加进去。
二是在分段时,可使各段之间有重叠,这样会使方差减小[15]。
为了用数学形式描述welch方法[8],可以先假设:
t=1,...,Mj=1,...,S(式3.4)
式(3.4)表示第j个数据段,其中的
是第j个观测序列的起始点。
如果K=M,则序列不重叠(但是相邻连接的),可以采用Bartlett方法对样本分段(即产生S=L=N/M个数据子样本)。
但是Welch方法中建议K值选为M/2,此时,有
个数据段(在连续子段之间有50%的重叠)。
以下是利用Welch法进行功率谱的估计的MATLAB代码:
Fs=1000;
n=0:
1/Fs:
1;
yn=cos(2*pi*40*n)+3*cos(2*pi*90*n)+randn(size(n));
nfft=1024;
window=boxcar(100);%矩形窗
window1=hamming(100);%海明窗
window2=blackman(100);%blackman窗
noverlap=20;%数据无重叠
range='half';%频率间隔为[0Fs/2],计算一半的频率
[Pxx,f]=pwelch(yn,window,noverlap,nfft,Fs,range);
[Pxx1,f]=pwelch(yn,window1,noverlap,nfft,Fs,range);
[Pxx2,f]=p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 实时 信号 谱分析 设计 毕业论文
![提示](https://static.bdocx.com/images/bang_tan.gif)