MATLAB语音信号的时域分析
实验二 利用MATLAB进行时域分析
实验二利用MATLAB进行时域分析本实验内容包含以下三个部分:基于MATLAB得线性系统稳定性分析、基于MATLAB得线性系统动态性能分析、与MATALB进行控制系统时域分析得一些其它实例。
一、基于MATLAB得线性系统稳定性分析线性系统稳定得充要条件就是系统得特征根均位于S平面得左半部分。
系统得零极点模型可以直接被用来判断系统得稳定性。
另外,MATLAB语言中提供了有关多项式得操作函数,也可以用于系统得分析与计算。
(1)直接求特征多项式得根设p为特征多项式得系数向量,则MATLAB函数roots()可以直接求出方程p=0在复数范围内得解v,该函数得调用格式为:v=roots(p) 例3、1 已知系统得特征多项式为:特征方程得解可由下面得MATLAB命令得出。
>> p=[1,0,3,2,1,1];v=roots(p)结果显示:v =0、3202 + 1、7042i0、3202 - 1、7042i-0、72090、0402 + 0、6780i0、0402 - 0、6780i利用多项式求根函数roots(),可以很方便得求出系统得零点与极点,然后根据零极点分析系统稳定性与其它性能。
(2)由根创建多项式如果已知多项式得因式分解式或特征根,可由MATLAB函数poly()直接得出特征多项式系数向量,其调用格式为:p=poly(v) 如上例中:v=[0、3202+1、7042i;0、3202-1、7042i;-0、7209;0、0402+0、6780i; 0、0402-0、6780i];>> p=poly(v)结果显示p =1、0000 0、0001 3、00002、0001 0、9998 0、9999由此可见,函数roots()与函数poly()就是互为逆运算得。
(3)多项式求值在MATLAB 中通过函数polyval()可以求得多项式在给定点得值,该函数得调用格式为: polyval(p,v)对于上例中得p值,求取多项式在x点得值,可输入如下命令:>> p=[1,0,3,2,1,1];x=1polyval(p,x)结果显示x =1ans =8(4)部分分式展开考虑下列传递函数:式中,但就是与中某些量可能为零。
Matlab中的时频分析与信号频谱分析
Matlab中的时频分析与信号频谱分析一、引言信号分析是现代工程中不可或缺的一项技术。
它被广泛应用于通信、声音处理、图像处理等领域。
而时频分析与信号频谱分析作为信号分析的两个重要方面,在Matlab中有着强大的工具支持。
本文将重点介绍Matlab中的时频分析与信号频谱分析,并探讨它们在实际应用中的价值和意义。
二、时频分析时频分析是一种将信号的时域和频域特征结合起来进行分析的方法。
它主要用于分析非平稳信号中的瞬态特征,并揭示信号在时间和频率上的变化规律。
在Matlab中,时频分析可以通过多种工具实现,如短时傅里叶变换(Short-time Fourier Transform,STFT)、连续小波变换(Continuous Wavelet Transform,CWT)等。
1. 短时傅里叶变换(STFT)STFT是时频分析中最常用的方法之一。
它将信号分成若干个短时段,并对每个短时段应用傅里叶变换来得到瞬时频谱。
在Matlab中,可以使用stft函数来实现STFT。
通过调节窗函数的类型和窗长、重叠等参数,可以灵活地进行时频分析。
2. 连续小波变换(CWT)CWT是一种基于小波分析原理的时频分析方法。
它利用小波函数将信号分解成不同频率的成分,并计算每个时刻的频率特征。
在Matlab中,可以使用cwt函数来进行CWT。
通过选择合适的小波函数和尺度参数,可以获得更精确的时频信息。
三、信号频谱分析信号频谱分析是一种通过傅里叶变换等方法来分析信号的频域特征的方法。
它可以揭示信号中的频率成分、频谱密度等信息,对于理解信号的频率特性及其在系统中的传输和处理具有重要意义。
在Matlab中,信号频谱分析可以通过快速傅里叶变换(Fast Fourier Transform,FFT)等函数来实现。
1. 快速傅里叶变换(FFT)FFT是一种高效的傅里叶变换算法,能够快速计算信号的频谱。
在Matlab中,可以使用fft函数来进行FFT。
Matlab中的时频分析方法
Matlab中的时频分析方法引言:时频分析是一种将信号在时间和频率两个维度上进行分析的方法,它能够揭示信号的瞬时频率变化以及频率成分的随时间的演变。
在实际应用中,时频分析常常被用于处理非平稳信号,如音频信号、地震信号等。
在Matlab中,有多种时频分析方法可以使用,本文将介绍其中一些主要的方法并进行比较和分析。
一、短时傅里叶变换(Short-Time Fourier Transform)短时傅里叶变换是最基本的时频分析方法之一,它将信号分成若干个小时间窗口,然后对每个时间窗口进行傅里叶变换得到频谱,从而获得信号在时间与频率上的变化信息。
Matlab中通过调用“spectrogram”函数可以实现短时傅里叶变换,该函数可以设置窗口长度、重叠率等参数,从而对不同信号进行合适的时频分析。
二、连续小波变换(Continuous Wavelet Transform)连续小波变换是一种将信号与连续小波函数进行卷积的方法,通过在时间和尺度上对小波函数进行变化来获得时频信息。
在Matlab中,可以通过调用“cwt”函数进行连续小波变换,该函数可以选择不同的小波基函数和尺度参数来实现不同的时频分析方法。
连续小波变换由于具有变尺度的特点,可以有效地分析信号的瞬时频率变化。
三、短时自相关函数(Short-Time Autocorrelation Function)短时自相关函数是通过在时间上对信号进行平移并与自身进行相关分析的方法,可以获得信号的瞬时自相似性。
在Matlab中,可以通过调用“xcorr”函数来计算信号的自相关函数,然后进行时频分析。
短时自相关函数能够在时域上提取信号的瞬时周期性信息,对于具有明显周期性变化的信号有着较好的适用性。
四、时变高阶谱(Time-Varying Higher-Order Spectra)时变高阶谱是一种通过对信号进行高阶统计分析来获取时频信息的方法,具有较好的时频分辨能力。
在Matlab中,可以通过调用“tfrpwv”函数进行时变高阶谱的计算,该函数可以设置不同的高阶统计参数来实现不同的时频分析。
实验二-MATLAB用于时域分析
实验二 MATLAB用于时域分析一、实验目的通过使用MATLAB完成系统的输出响应分析、稳定性分析、求动态性能指标以及稳态误差分析等工作。
二、实验原理在MATLAB中,可以通过单输入单输出系统的传递函数,进行系统的脉冲响应,阶跃响应以及一般输入响应等时域分析。
用到以下函数:单位阶跃响应 step(num,den,t)单位脉冲响应impluse(num,den,t)一般输入响应 y=Isim(num,den,u,t)时间t是事先定义的矢量,u为输入信号。
此外,还可以求出系统的超调量,调节时间以及稳态误差。
SIMULINK是MATLAB的一个附加组件,用来提供一个系统的建模、动态仿真及综合分析的工作平台。
SIMULINK模型可以用来模拟线性或非线性、连续或离散,或者两者混合的系统,即可用它来模拟几乎所有的动态系统。
三、实验内容通过MATLAB以及其中的SIMULINK完成系统的输出响应分析、稳定性分析、求动态性能指标以及稳态误差分析等工作。
四、实验代码1、一阶系统响应sys1=tf([100],[1 0]);sys2=tf([0.1],[1]);sys=feedback(sys1,sys2);step(sys)2、二阶系统响应wn=1t=0:0.1:12;num=[1];zeta1=0;den1=[1 2*zeta1 1];zeta3=0.3;den3=[1 2*zeta3 1];zeta5=0.5;den5=[1 2*zeta5 1];zeta7=0.7;den7=[1 2*zeta7 1];zeta9=1.0;den9=[1 2*zeta9 1];[y1,x,t]=step(num,den1,t);[y3,x,t]=step(num,den3,t);[y5,x,t]=step(num,den5,t);[y7,x,t]=step(num,den7,t);[y9,x,t]=step(num,den9,t);plot(t,y1,t,y3,t,y5,t,y7,t,y9)grid on;3、稳定性分析den=[1 1 2 24];roots(den)4、求动态性能指标t=0:0.01:2;num=[1000]';den=[1 34.5 1000];[y,x,t]=step(num,den,t);plot(t,y);maxy=max(y);yes=y(length(t));pos=100*(maxy-yes)/yesfor i=1:1:201if y(i)==maxy,n=i;endendtp=(n-1)*0.01for i=1:1:201if(y(i)<1.05&y(i)>0.95),n=i;endbreak;endts=(n-1)*0.015、稳态误差分析t=0:0.1:15;[num1,den1]=cloop([1],[1 1]);[num2,den2]=cloop([1],[1 1 0]);[num3,den3]=cloop([4 1],[1 1 0 0]);y1=impulse(num1,den1,t);y2=impulse(num2,den2,t);y3=impulse(num3,den3,t);subplot(311);plot(t,y1);subplot(312);plot(t,y2);subplot(313);plot(t,y3);er1=0-y1(length(t))er2=0-y2(length(t))er3=0-y3(length(t))6、求单位阶跃响应及其稳态误差t=0:0.1:20[num1,den1]=cloop([1],[1 1]);[num2,den2]=cloop([1],[1 1 0]);[num3,den3]=cloop([4 1],[1 1 0 0]);y1=step(num1,den1,t);y2=step(num2,den2,t);y3=step(num3,den3,t);subplot(311);plot(t,y1);subplot(312);plot(t,y2);subplot(313);plot(t,y3);er1=1-y1(length(t));er2=1-y2(length(t));er3=1-y3(length(t));7、求单位斜坡响应及其稳态误差t=0:0.1:20;t1=0:0.1:100;[num1,den1]=cloop([1],[1 1]);[num2,den2]=cloop([1],[1 1 0]);[num3,den3]=cloop([4 1],[1 1 0 0]);y1=step(num1,[den1 0],t1);y2=step(num2,[den2 0],t);y3=step(num3,[den3 0],t);subplot(311);plot(t1,y1,t1,t1);subplot(312);plot(t,y2,t,t);subplot(313);plot(t,y3,t,t);er1=t1(length(t1))-y1(length(t1))er2=t(length(t))-y2(length(t))er3=t(length(t))-y3(length(t))8、实例分析kp=[0.11 6];t=[0:0.01:1];num1=303.03*kp(1);den1=[0.00001 0.00633 0.20167 21.21*kp(1)+1];y1=step(num1,den1,t);num2=303.03*kp(2);den2=[0.00001 0.00633 0.20167 21.21*kp(2)+1];y2=step(num2,den2,t);subplot(211);plot(t,y1);subplot(212);plot(t,y2);gtext('kp=0.11');gtext('kp=6');9、SIMULINK用于系统仿真五、实验结果1、一阶系统响应2、二阶系统响应3、稳定性分析4、求动态性能指标5、稳态误差分析6、求单位阶跃响应及其稳态误差7、求单位斜坡响应及其稳态误差8、实例分析9、SIMULINK用于系统仿真六、实验总结通过本次实验实现了用MATLAB完成系统的输出响应分析、稳定性分析、求动态性能指标以及稳态误差分析等工作。
如何利用Matlab进行时频分析
如何利用Matlab进行时频分析时频分析是一种在信号处理领域中常用的分析方法,能够揭示信号在时间和频率上的变化特征。
在工程领域和科学研究中,时频分析广泛应用于语音处理、图像处理、地震信号分析等领域。
而Matlab作为一种功能强大的科学计算软件,在时频分析方面有着丰富的工具和函数库,本文将介绍如何利用Matlab进行时频分析。
1. 时频分析的基本概念时频分析是通过研究信号在时间和频率上的变化特征来揭示信号内在结构的一种方法。
传统的频域分析方法如傅里叶变换只能提供信号在频率上的信息,而对于非稳态信号来说,时域分析方法如时域图谱亦无法全面反映信号的特征。
2. Matlab中的时频分析工具Matlab提供了多种时频分析工具,如短时傅里叶变换(Short-Time Fourier Transform,STFT)、连续小波变换(Continuous Wavelet Transform,CWT)等。
其中,STFT是最常用的一种时频分析方法。
3. 使用Matlab进行短时傅里叶变换短时傅里叶变换是时频分析中常用的一种方法,它通过将信号分割成短时段的小片段,然后对每个小片段进行傅里叶变换来获得信号在时频上的信息。
在Matlab中,可以使用stft函数来实现短时傅里叶变换。
4. 调整短时傅里叶变换参数在使用stft函数进行短时傅里叶变换时,可以通过调整一些参数来控制分析的精度和结果。
如时间窗口长度、频率窗口宽度等。
一般来说,时间窗口长度应根据信号的特性来选择,频率窗口宽度则影响分辨率。
5. 进一步分析时频图像通过进行短时傅里叶变换,我们可以得到信号的时频图像。
在Matlab中,可以使用imagesc函数来绘制时频图像,并对图像进行进一步分析。
如可以使用axis 函数来调整坐标轴的刻度和范围,colorbar函数来添加颜色刻度等。
6. MatLab中的连续小波变换除了短时傅里叶变换,Matlab还提供了连续小波变换的函数cwt。
实验三 利用MATLAB进行时域分析
实验三
一、实验目的
(1)学会使用MATLAB编程绘制控制系统的单位阶跃响应曲线;
(2)研究二阶控制系统中,、n对系统动态特性和时域指标的影响;
(3)掌握准确读取动态特性指标的方法;
lab2='zunibi = 0.25';text(0.3,1.5,lab2),
>> lab3='zunibi = 0.5';text(0.3,1.2,lab3),
lab4='zunibi = 0.75';text(0,3,1.05,lab4),
lab5='zunibi = 1';text(0,35,0.9,lab5),
den=[1,4,25];
step(num,den)
grid%绘制网格线。
title(¹Unit-Step Response of G(s)=25/(s^2+4s+25) ¹) %图像标题
图3-2MATLAB绘制的响应曲线
还可以用下面的语句来得出阶跃响应曲线
>> G=tf([0,0,25],[1,4,25]);
den = [1 2*sigma*10 100];
damp(den)
sys = tf(num,den);
i=i+1;
step(sys,2)
hold on
end
Eigenvalue Damping Freq. (rad/s)
0.00e+000 + 1.00e+001i 0.00e+000 1.00e+001
matlab对语音信号的处理及分析
Matlab对语音信号的处理及分析摘要:Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波,时域和频谱分析等,他的信号处理与分析工具箱为语音信号的处理和分析提供了十分丰富的功能函数,利用这些函数可以快捷而又方便地完成语音信号的处理和分析。
关键词:Matlab、语音信号、数字滤波、信号处理Matlab for speech signal processing and analysisZhu hao(College of Physics and Electronic Engineering Information Wenzhou university)Abstract:Matlab language is a data analysis and processing functions are very powerful computer application software, sound files which can be transformed into discrete data files, then use its powerful ability to process the data matrix operations, such as digital filtering,when domain and frequency domain analysis and so on. Its signal processing and analysis toolkit for voice signal analysis provides a very rich feature function, use of these functions can be quick and convenient features complete voice signal processing and analysis.Keywords: Matlab,Voice Signal,Digital filtering,The signal processing正文:1.引言随着社会文化的进步和科学技术的发展,人类开始进入了信息化时代,用现代手段研究语音处理技术,使人们能更加有效地产生、传输、存储、和获取语音信息,这对于促进社会的发展具有十分重要的意义,因此,语音信号处理正越来越受到人们的关注和广泛的研究。
(完整word版)基于matlab的语音信号分析与处理
基于matlab的语音信号分析与处理摘要:滤波器设计在数字信号处理中占有极其重要的地位,FIR数字滤波器和IIR 滤波器是滤波器设计的重要组成部分。
Matlab功能强大、编程效率高, 特别是Matlab具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理和设计。
基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。
使用窗函数法来设计FIR数字滤波器,用巴特沃斯、切比雪夫和双线性变法设计IIR 数字滤波器,并利用MATLAB作为辅助工具完成设计中的计算与图形的绘制。
关键词:数字滤波器;MATLAB;切比雪夫Abstract:Filter design in digital signal processing plays an extremely important role, FIR digital filters and IIR filter is an important part of filter design. Matlab is powerful, programming efficiency, Matlab also has a particular signal analysis toolbox, it need not have strong programming skills can be easily signal analysis, processing and design. MATLAB based on the noise issue speech signal processing design and implementation of digital signal processing integrated use of the theoretical knowledge of the speech signal plus noise, time domain, frequency domain analysis and filtering. The corresponding results obtained through theoretical derivation, and then use MATLAB as a programming tool for computer implementation.Implemented in the design process, using the windowfunction method to design FIR digital filters with Butterworth, Chebyshev and bilinear Reform IIR digital filter design and use of MATLAB as a supplementary tool to complete the calculation and graphic design Drawing.Keywords:digital filter; MATLAB; Chebyshev语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。
基于MATLAB语音信号检测分析及处理
第一章绪论Matlab是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括Matlab和Simulink两大部分。
1.1 Matlab简介MATLAB是英文MATrix LABoratory(矩阵实验室)的缩写。
早期的MATLAB 是用FORTRAN语言编写的,尽管功能十分简单,但作为免费软件,还是吸引了大批使用者。
经过几年的校际流传,在John Little。
Cleve Moler和Steve Banger 合作,于1984年成立MathWorks公司,并正式推出MATLAB第一版版。
从这时起,MATLAB的核心采用C语言编写,功能越来越强大,除原有的数值计算功能外,还新增了图形处理功能。
MathWorks公司于1992年推出了具有划时代意义的4.0版;1994年推出了4.2版扩充了4.0版的功能,尤其在图形界面设计方面提供了新方法;1997年春5.0版问世,5.0版支持了更多的数据结构,使其成为一种更方便、更完善的编程语言;1999年初推出的MATLAB5.3版在很多方面又进一步改进了MATLAB语言的功能,随之推出的全新版本的最优化工具箱和Simulink3.0达到了很高水平;2000年10月,MATLAB6.0版问世,在操作页面上有了很大改观,为用户的使用提供了很大方便,在计算机性能方面,速度变的更快,性能也更好,在图形界面设计上更趋合理,与C语言接口及转换的兼容性更强,与之配套的Simulink4.0版的新功能也特别引人注目;2001年6月推出的MATLAB6.1版及Simulink4.1版,功能已经十分强大;2002年6月推出的MATLAB6.5版及Simulink5.0版,在计算方法、图形功能、用户界面设计、编程手段和工具等方面都有了重大改进;2004年,MathWorks公司推出了最新的MA TLAB7.0版,其中集成了最新的MATLAB7编译器、Simumlink6.0仿真软件以及很多工具箱。
matlab系统的时域分析实验报告
matlab系统的时域分析实验报告Matlab系统的时域分析实验报告引言:时域分析是信号处理中的重要内容,它可以帮助我们理解信号的时序特性以及信号在时间上的变化规律。
Matlab作为一款强大的数学软件,提供了丰富的工具和函数,可以方便地进行时域分析实验。
本实验报告将介绍利用Matlab进行时域分析的方法和实验结果。
实验目的:1. 了解时域分析的基本概念和方法;2. 掌握Matlab中时域分析的相关函数和工具;3. 进行实际信号的时域分析实验,并分析实验结果。
实验步骤:1. 信号生成:利用Matlab生成一个正弦信号,设置合适的频率和振幅。
2. 信号采样:将生成的信号进行采样,得到离散的信号序列。
3. 时域分析:利用Matlab中的fft函数对离散信号进行傅里叶变换,得到信号的频谱。
4. 信号重构:利用Matlab中的ifft函数对频谱进行逆傅里叶变换,将信号重构回时域。
5. 分析实验结果:比较原始信号和重构信号的差异,分析由于采样引起的信号失真。
实验结果:经过实验,我们得到了以下结果:1. 通过Matlab生成的正弦信号具有一定的频率和振幅,可以在时域上观察到信号的周期性变化。
2. 通过采样得到的离散信号序列可以用于进行时域分析。
3. 利用Matlab中的fft函数对离散信号进行傅里叶变换,得到信号的频谱图。
频谱图可以展示信号在不同频率上的能量分布情况。
4. 利用Matlab中的ifft函数对频谱进行逆傅里叶变换,将信号重构回时域。
重构的信号与原始信号在时域上基本一致,但可能存在细微的差异。
5. 由于采样引起的信号失真,重构的信号可能会与原始信号存在一定的差异。
差异的大小与采样频率有关,采样频率越高,失真越小。
讨论与结论:本实验通过Matlab进行时域分析,得到了信号的频谱图并进行了信号的重构。
实验结果表明,Matlab提供的时域分析工具和函数能够方便地进行信号分析和处理。
通过时域分析,我们可以更好地理解信号的时序特性,并对信号进行处理和优化。
matlab 时域 频域 指标
在 MATLAB 中,时域和频域是信号处理领域中常用的两个概念。
以下是与时域和频域相关的一些指标:
时域指标:
1.时域信号表示:在 MATLAB 中,时域信号可以使用向量表示,其中向量的
元素表示信号在不同时间点的取值。
例如:
2.信号幅值:信号在时域的幅值表示信号在不同时间点的振幅。
可以使用plot
函数来绘制信号波形:
3.信号能量和功率:信号在时域的能量可以通过对信号的幅值的平方进行积
分得到。
功率是能量除以时间。
频域指标:
1.傅里叶变换: MATLAB 提供了fft函数用于计算信号的离散傅里叶变换
(DFT)。
2.频谱表示:频谱表示信号在频域中的成分。
可以使用plot函数来绘制频谱
图:
3.主要频率:频谱中最高峰对应的频率通常表示信号的主要频率。
4.带宽:频谱中主要频率附近的宽度。
这些指标提供了一种全面了解信号在时域和频域中的特性的方法。
在MATLAB 中,通过使用信号处理工具箱和绘图函数,可以轻松地对时域和频域进行分析。
(完整版)利用MATLAB进行时域分析
自动控制原理与系统课程实验报告实验题目:利用MATLAB进行时域分析班级:机电1131班姓名:刘润学号:38号一、实验目的及内容时域分析法是一种直接在时间域中对系统进行分析的方法,具有直观、准确的优点,并且可以提供系统时间响应的全部信息。
在此实验中,主要介绍时域法进行系统分析,包括一阶系统、二阶系统以及高阶系统,以及系统的性能指标。
通过实验,能够快速掌握、并利用MATLAB及控制系统箱对各种复杂控制系统进行时域分析。
二、实验设备三、实验原理典型的二阶系统在不同的阻尼比的情况下,它们的阶跃响应输出特性的差异是很大的。
若阻尼比过小,则系统的振荡加剧,超调量大幅度增加;若阻尼比过大,则系统的响应过慢,又大大增加了调整时间,下面通过此实验课题分析输出响应变化规律:已知二阶振荡环节的传递函数为:G(s)=ωn*ωn/(s*s+2*ζ*ωn*s+ωn*ωn),其中ωn=0.4,ζ从0变化到2,求此系统的单位阶跃响应曲线,并分析当ζ发生变化时,二阶系统的响应有什么样的变化规律。
四、实验步骤编出程序如下图:五、实验结果画出图表如下图:六、结果分析(1)当ξ=0(无阻尼)(零阻尼)时:无阻尼时的阶跃响应为等幅振荡曲线。
如图ξ=0曲线。
(2)当0<ξ<1(欠阻尼)时:对应不同的ξ,可画出一系列阻尼振荡曲线,且ξ越小,振荡的最大振幅愈大。
如图ξ=0.4曲线。
(3)当ξ=1(临界阻尼)时:临界阻尼时的阶跃响应为单调上升曲线。
如图ξ=1曲线。
(4)当ξ>1(过阻尼)时:过阻尼时的阶跃响应也为单调上升曲线。
不过其上升的斜率较临界阻尼更慢。
如图ξ=1.6曲线七、教师评语。
基于MATLAB语音信号处理(语音信号处理的综合仿真)
---------------------------------------------------------------范文最新推荐------------------------------------------------------ 基于MATLAB语音信号处理(语音信号处理的综合仿真)摘要:针对目前在嘈杂的环境中手机接听电话时人声不清楚的缺点,本文介绍了一个基于MATLAB的算法来对语音信号进行处理。
该算法通过计算机录音系统来实现对语音信号的采集,并且利用MATLAB的计算和信号处理能力进行频谱分析和设计滤波器,最终通过仿真得到滤波前后的波形,从而达到保留语音信号中的大部分人声并且滤除掉嘈杂噪声的目的。
仿真实验表明,采用低通滤波器保留人声的效果显著,失真较少。
本算法具有操作简单,运行速度快等优点。
关键词:语音信号;MATLAB;滤波;低通;噪声Speech Signal Processing Based on MATLAB1 / 17Abstract: At present, in view of the shortcomings of that the voice is not clear when people answering the phone in a noisy environment, this paper introduces a algorithm for speech signal processing based on MATLAB. The algorithm realizes the acquisition of the speech signal through a computer recording system. And the software can realize the capabilities of frequency spectrum analysis and filter design by the use of calculation and signal processing capabilities of MATLAB. Finally it can get the waveform before and after filtering through the simulation. So that we can retain most of the voices in the speech signal and at the same time remove noisy noise through filter. Simulation results show that the low pass filter has a remarkable effect of keeping voices and the distortion is little. This algorithm has the advantages of simple to operate and fast.Key Words: Speech signal; MATLAB; Filtering; Low pass; Noise目录---------------------------------------------------------------范文最新推荐------------------------------------------------------ 摘要1引言11.研究意义及研究现状21.1研究意义21.2研究现状22. 语音信号处理的总体方案2.1 研究的主要内容本课题主要介绍的是的语音信号的简单处理,目的就是为以后在手机上的移植打下理论基础。
在Matlab中进行时频分析和信号时频分析
在Matlab中进行时频分析和信号时频分析时频分析是在时域和频域两个维度上分析信号特性的方法,能够揭示信号在时间和频率上的变化规律。
Matlab是一款功能强大的数学计算软件,提供了丰富的工具和函数用于进行时频分析和信号处理。
本文将介绍如何在Matlab中进行时频分析和信号时频分析的基本方法和应用场景。
首先,我们需要了解时频分析的基本概念和常用方法。
时频分析是一种将信号分解成时域和频域信息的技术,可以用于分析信号的瞬时频率、频谱演化等特征。
常用的时频分析方法包括短时傅里叶变换(STFT)、连续小波变换(CWT)、希尔伯特-黄变换(HHT)等。
这些方法基于不同的数学原理和算法,适用于不同类型的信号分析任务。
在Matlab中,时频分析的基本工具是信号处理工具箱(Signal Processing Toolbox)。
该工具箱提供了一系列函数,用于实现信号的时域和频域分析、滤波、频谱估计等。
以STFT为例,可以使用函数`spectrogram`实现信号的时频谱计算和绘制。
该函数接受信号和窗函数作为输入参数,并计算出信号在不同时间和频率上的能量大小。
通过调整窗函数的长度和参数,可以获得不同精度和分辨率的时频谱图。
除了基本的时频分析方法,Matlab还提供了信号处理工具箱中的其他函数和工具,用于处理和分析特定类型的信号。
例如,在音频信号处理方面,可以使用`stft`函数进行短时傅里叶变换,并通过调整参数获得不同时间和频率分辨率的频谱图。
对于语音信号的时频分析,可以使用`pmtm`函数计算信号的功率谱密度,并利用谱峰提取算法获得信号的主频率。
此外,Matlab还提供了丰富的可视化工具和函数,用于将时频分析结果呈现出来。
通过调用绘图函数,可以绘制出时频谱图、频谱图、功率谱图等,直观显示信号的时频特性。
可以使用不同的颜色图表、坐标轴设置和图像处理技术来增强图像的可读性和表达力。
在实际应用中,时频分析广泛应用于许多领域。
使用MATLAB进行时频分析的步骤与技巧
使用MATLAB进行时频分析的步骤与技巧时频分析是一种将信号在时间和频率上进行联合分析的方法,它可以帮助我们深入了解信号的时域变化和频域特征。
而MATLAB作为一种功能强大、易于使用的数学软件,具备了丰富的工具箱,可以帮助我们进行时频分析。
本文将详细介绍使用MATLAB进行时频分析的步骤与技巧。
一、数据导入首先,我们需要将要分析的数据导入MATLAB中。
MATLAB支持多种常见数据格式的导入,如文本文件、Excel文件、MAT文件等。
可以使用readtable函数导入文本文件,也可以使用readmatrix函数导入Excel文件。
如果数据是以MAT 文件形式存储的,可以使用load函数进行导入。
导入后的数据将被存储为MATLAB中的矩阵或表格,方便后续的处理和分析。
二、预处理在进行时频分析前,我们需要对数据进行预处理,以保证结果的准确性和可靠性。
预处理包括数据清洗、去噪和滤波等操作。
对于有缺失值的数据,可以使用interpolate函数进行插补,或者使用deleteMissing函数删除含有缺失值的样本。
对于存在噪声的数据,可以使用滑动平均法、中值滤波法等方法进行去噪。
如果需要对信号进行滤波,可以使用MATLAB中的滤波函数,如butter、cheby1等。
三、时频转换时频转换是时频分析的核心步骤之一,它将信号从时域转换到时频域,以展现信号在不同时间和频率上的变化。
常用的时频转换方法有短时傅里叶变换(STFT)、连续小波变换(CWT)和高分辨率时频分析(High-Resolution Time-Frequency Analysis, HRTFA)等。
MATLAB中提供了丰富的工具箱来实现不同的时频转换方法。
例如,可以使用spectrogram函数进行STFT的计算,使用cwt函数进行CWT的计算。
这些函数会将信号划分为若干个时间窗口,并计算每个窗口上的频谱。
对于CWT,可以选择不同的小波函数和尺度参数来调整分辨率。
matlab时域宽度,MATLAB对信号的时域与频域分析
matlab时域宽度,MATLAB对信号的时域与频域分析%信号的时域和频域分析%信号的频域分析,计算⽅波的DFS(离散傅⾥叶变换),在60的时窗宽度上⽅波宽度分别为%5到12,并且画出x(n)和DFS(x(n))的杆状图L=5;N=60;k=[-N/2:N/2];xn=[zeros(1,(N-L+1)/2),ones(1,L),zeros(1,(N-L-1)/2)];n=[0:N-1];subplot(221)stem(n,xn);gridaxis([0 60 -0.3 1.3]);title('xn');p=0:N-1;WN=exp(-j*2*pi/N);nk=n'*p;WNnk=WN.^nk;Xk=xn*WNnk;magXk=abs([Xk(N/2+1:N) Xk(1:N/2+1)]);subplot(222)stem(k,magXk);gridaxis([-N/2 N/2 -0.5 5.5]);xlabel('k');ylabel('spectrum');title('DFS:L=5,N=60');L=12;N=60;k=-N/2:N/2;xn=[zeros(1,(N-L+1)/2),ones(1,L),zeros(1,(N-L-1)/2)];n=0:N-1;subplot(223)stem(n,xn);gridaxis([0 60 -0.3 1.3]);title('xn');p=[0:N-1];WN=exp(-j*2*pi/N);nk=n'*p;magXk=abs([Xk(N/2+1:N) Xk(1:N/2+1)]);subplot(224)stem(k,magXk);gridaxis([-N/2 N/2 -0.5 13]);xlabel('k');ylabel('spectrum');title('DFS:L=12,N=60');%频谱分析的若⼲问题%不同时窗正弦信号频谱的分析%1Hz的正弦波仅取10个周期及50个周期,都做4096点FFT,⽐较两者的频谱t=0:0.1:10; %取10或50(将10变成50即可)个周期的进⾏变换y1=sin(2*pi*t);Y1=fft(y1,4096); %4096点的快速傅⾥叶变换Y=fftshift(Y1);c=[0:2047]/409;plot(c,abs(Y(2049:4096)))axis([0 2 -5 60]);title('sin(t)周期 T=10')grid%加窗函数后的频谱特征分析%不加窗函数是正弦谱线与矩形窗频谱的卷积;加窗函数是正弦谱线于汉明窗频谱的卷积%后者的旁瓣⼩得多,但是主谱线宽⼀些t=0.1:0.1:20; %取20个周期y=sin(2*pi*t); %定义1Hz的正弦波w=hamming(200); %定义200长的汉明窗y=y.*w';Y1=fft(y,4096); %4096点的快速傅⾥叶变换Y=fftshift(Y1);c=[0:2047]./409.6;plot(c,abs(Y(2049:4096)))axis([0 3 -5 60]);title('sin(t) 加窗频谱');grid%CZT线性调频Z变换%应⽤CZT变换不在频率轴上均匀采样,对关⼼的部分加⼤采样密度,可以提⾼关⼼部分的f1=13.2;f2=13.41;f3=15;fs=60;n=0:N-1;t=2*pi*n/fs;e=fs/N;n1=0:e:(fs/2)-e;x=sin(f1*t)+sin(f2*t)+sin(f3*t); %三个不同频率正弦信号相加Y1=abs(fft(x)); %⼀般傅⾥叶频谱分析subplot(121)plot(n1,(Y1(1:N/2)));title('fft');grid;M=60; %CZT变换的长度f0=12.6;q=0.05;A=exp(j*2*pi*f0/fs); %CZT变换的起点W=exp(-j*2*pi*q/fs); %CZT变换的倾斜率Y3=czt(x,M,W,A); %CZT变换做频谱分析n2=f0:q:f0+(M-1)*q;subplot(122)plot(n2,abs(Y3));title('czt');grid%常见信号的频谱分析%基础波形 fft(快速傅⾥叶变换),fftshift(移动傅⾥叶变换的系数)n=2048;t=1:2048;y=zeros(1,n);y(1,[1020:1035])=1; %定义宽度为15的⽅波y1=[zeros(1,1000),ones(1,60),zeros(1,988)];%定义宽度为60的⽅波subplot(121)plot(t,y,'b',t,y1,'r')axis([850 1200 -0.2 1.3]);title('⽅形图');gridsubplot(122)Y2=fft(y,2048);Y3a=fftshift(Y3);w=-1024:1023;semilogy(w,abs(Y2a),'b',w,abs(Y3a),'r')axis([-500 500 -5 80]);title('⽅波频谱');axis([-250 250 1 100]);grid;%三⾓波n=2048;t=1:2048;y=[zeros(1,800),[1:500],zeros(1,748)]; %定义三⾓波subplot(121)plot(t,y)axis([0 2100 -30 560]);title('三⾓波');gridsubplot(122)Y1=fft(y,2048);Y=fftshift(Y1);c=-1024:1023;yw=log(abs(Y)+eps);plot(c,yw,'r')axis([-104 104 7 12]);title('三⾓波频谱');grid on;%冲击函数n=400;delta=4*pi/n;t=-2*pi:delta:2*pi;y=sinc(t); %定义冲击函数subplot(121)plot(t,y)axis([-7 7 -0.4 1.3]);title('sinc(t)');gridsubplot(122)c=-1024:1023;plot(c,abs(Y))axis([-500 500 -5 40]);title('sinc(t)的频谱');grid%调制信号%双边带调幅fs=1000;t=0:1/fs:.4;fc=250;y=0.4*cos(pi*20*t);x=modulate(y,fc,fs,'amdsb-tc'); %双边带调幅subplot(121)plot(t,x)legend('调幅双边带波形');gridsubplot(122)p=fft(x,1024);p1=fftshift(p);w=0:511;p2=abs(p1);plot(w,p2(1:512));grid;legend('调幅双边带频谱')axis([100 400 -10 100])%⽤直⽅图表⽰调频信号谱m=5; %⽤直⽅图表⽰调制指数为5的调频信号谱分析n=1:10;y1(n)=besseli(n,(i*m),1);z1=real(y1./(i.^(n)));z2=fliplr(z1);y0=besseli(0,(i*m),1);z0=real(y0);z=[z2 z0 z1];axis([-10 10 -.1 .8]);gridtitle('m=5')^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ %四种数字调制⽅法(ASK FSK PSK OQPSK)的频谱图%产⽣码元宽度为64的随机序列%m⽂件n=1:8192;m=1:128;x(n)=randint(1,8192,2);x=[x(n)]';y(n)=zeros(1,8192);z(m)=zeros(1,128);for n=1:8192form=1:128if n==64*m-63z(m)=x(n);if m==ceil(n/64)y([(64*m-63):(64*m)]')=z(m);endendendendn=1:8192;rm2=y(n);%ASK调制n=[1:(2^13)];x1=cos(n.*1e9*2*pi/4e9);run('rm2');X2=rm2;x2=X2';x=x1.*X2;b=.42+.5*cos(2*pi*(n-(2^12))/(2^13))+0.08*...cos(4*pi*(n-(2^12))/(2^13));X=b.*x;x3=[ones(1,64) zeros(1,8128)];y1=X(1:(2^13));y4=x1.*x3;Y1=fft(y1,(2^13));magY1=abs(Y1(1:1:(2^12)+1))/(200);u=(2*w1/pi)*1e9;figure(1)subplot(211)plot(u,magY1,'b',u,magY4,'r');gridtitle('ASKr');axis([4e8,1.6e9,0,1.1])X2=b.*X2;y2=X2(1:(2^13));Y2=fft(y2,(2^13));magY2=abs(Y2(1:1:(2^12)+1))/(200);k1=0:(2^12);w1=(2*pi/(2^13))*k1;u=(2*w1/pi)*1e9;Y3=fft(x3,(2^13));magY3=abs(Y3(1:1:(2^12)+1))/(40); subplot(212)semilogy(u,magY2,'b',u,magY3,'r');gridtitle('ASKr-modulation');axis([0 1.2e9 3e-4 3]);figure(2)subplot(211);plot(n,x2);axis([0 720 -0.2 1.2])subplot(212);plot(n,x);axis([0 720 -1.2 1.2])%FSK调制频谱分析n=[1:(2^13)];d=.13;run('rm2');x2=((2*rm2)-1);x5=cos(.5*n.*((1e8*2*pi/4e8)-d));x4=cos(.5*n.*((1e8*2*pi/4e8)+d));x=cos(.5*n.*((1e8*2*pi/4e8)+d*x2));b=.42+.5*cos(2*pi*(n-(2^12))/(2^13))+0.08*...cos(4*pi*(n-(2^12))/(2^13));X=b.*x;x3=[ones(1,64) zeros(1,8128)];y1=X(1:(2^13));y4=x4.*x3;y5=x5.*x3;Y1=fft(y1,(2^13));magY1=abs(Y1(1:1:(2^12)+1))/(200*2); Y4=fft(y4,(2^13));magY4=abs(Y4(1:1:(2^12)+1))/(70);Y5=fft(y5,(2^13));magY5=abs(Y5(1:1:(2^12)+1))/(70);subplot(211)plot(u,magY1,'b',u,magY4,'r',u,magY5,'g');gridtitle('FSKr');axis([1e8 1e9 0 .65]);X2=b.*x2;y2=X2(1:(2^13));Y2=fft(y2,(2^13));magY2=abs(Y2(1:1:(2^12)+1))/(50*6); k1=0:(2^12);w1=(2*pi/(2^13))*k1;u=(2*w1/pi)*1e9;Y3=fft(x3,(2^13));magY3=abs(Y3(1:1:(2^12)+1))/(30); subplot(212)plot(u,magY2,'b',u,magY3,'r');gridtitle('FSKr-modulation');axis([0 1.2e9 0 2.3])figure(2)subplot(211);plot(n,x2);axis([0 320 -1.2 1.2])subplot(212);plot(n,x);axis([0 320 -1.2 1.2])%PSK调制n=[1:(2^13)];x1=cos(n.*1e9*2*pi/4e9);run('rm2');x2=(2*rm2)-1;x=x1.*x2;b=.42+.5*cos(2*pi*(n-(2^12))/(2^13))+0.08*...cos(4*pi*(n-(2^12))/(2^13));X=b.*x;x3=[ones(1,64) zeros(1,8128)];y1=X(1:(2^13));y4=x1.*x3;Y1=fft(y1,(2^13));magY1=abs(Y1(1:1:(2^12)+1))/(300); Y4=fft(y4,(2^13));magY4=abs(Y4(1:1:(2^12)+1))/(30);k1=0:(2^12);w1=(2*pi/(2^13))*k1;u=(2*w1/pi)*1e9;figure(1)subplot(211)y2=X2(1:(2^13));Y2=fft(y2,(2^13));magY2=abs(Y2(1:1:(2^12)+1))/(300); k1=0:(2^12);w1=(2*pi/(2^13))*k1;u=(2*w1/pi)*1e9;Y3=fft(x3,(2^13));magY3=abs(Y3(1:1:(2^12)+1))/(30); subplot(212)plot(u,magY2,'b',u,magY3,'r');gridtitle('PSKr-modulation');axis([0 1.2e9 0 2.3])figure(2)subplot(211);plot(n,x2);title('PSKr');axis([0 1200 -1.2 1.2])subplot(212);plot(n,x);axis([100 275 -1.2 1.2])%谱估计 tfe 从输⼊输出中估计传递函数%估计传输函数h=fir1(30,.2,boxcar(31)); %使⽤矩形窗x=randn(16384,1); %输⼊信号y=filter(h,1,x); %输出信号z=tfe(x,y,1024,[],[],512);n=[1:length(z)];p=log10(abs(z)+eps);plot(n,p);grid%互功率谱密度 csd已知⼆信号求互功率谱密度h=fir1(30,.2,hamming(31)); %使⽤汉明窗h1=ones(1,10)/sqrt(10);r=randn(16384,1);x=filter(h1,1,r);y=filter(h,1,x);z=csd(x,y,1024,10000,triang(500),0,[]); %使⽤三⾓窗n=[1:length(z)];p=log10(abs(z)+eps);plot(n,p);gridx=randn(16384,1);y=filter(h,1,x);z=psd(y,1024,10000,kaiser(512,5),0,.95); %使⽤凯塞窗n=[1:length(z)];p=log10(abs(z)+eps);plot(n,p);grid。
matlab 信号时域分析实验报告
matlab 信号时域分析实验报告Matlab 信号时域分析实验报告引言:信号时域分析是数字信号处理中的重要内容之一。
通过对信号在时间域的分析,我们可以了解信号的特征和性质,为后续的信号处理工作提供基础。
本实验使用Matlab软件进行信号时域分析,通过实验结果的观察和分析,探索信号的时域特性。
实验目的:1. 了解信号在时域上的表示方式和基本性质;2. 掌握Matlab软件的基本操作,实现信号的时域分析;3. 分析不同信号的时域特性,比较它们的相似性和差异性。
实验步骤:1. 生成不同类型的信号:正弦信号、方波信号、三角波信号等;2. 绘制信号的时域波形图;3. 计算信号的平均值、方差和能量;4. 分析不同信号的时域特性。
实验结果与分析:1. 正弦信号的时域特性:正弦信号是一种周期性信号,通过调整频率、振幅和相位可以得到不同形态的正弦波。
在时域上,正弦信号呈现出周期性的波形,振幅和频率决定了波形的高低和密集程度。
通过计算平均值、方差和能量,可以得到正弦信号的基本统计特性。
2. 方波信号的时域特性:方波信号是一种周期性信号,其波形由高电平和低电平交替组成。
在时域上,方波信号呈现出矩形的波形,高电平和低电平的持续时间决定了波形的宽度和周期。
通过计算平均值、方差和能量,可以得到方波信号的基本统计特性。
3. 三角波信号的时域特性:三角波信号是一种周期性信号,其波形由线性增加和线性减少组成。
在时域上,三角波信号呈现出斜坡状的波形,线性增加和线性减少的斜率决定了波形的上升和下降速度。
通过计算平均值、方差和能量,可以得到三角波信号的基本统计特性。
实验结论:通过对不同类型信号的时域分析,我们可以得到信号的基本统计特性,如平均值、方差和能量等。
这些特性可以帮助我们了解信号的基本性质,为后续的信号处理工作提供依据。
Matlab软件提供了丰富的信号处理函数和工具,可以方便地进行信号时域分析。
掌握Matlab软件的基本操作和信号分析方法,对于数字信号处理的学习和应用具有重要意义。
利用MATLAB进行时域分析
利用MATLAB进行时域分析时域分析是信号处理中的重要一环,它可以帮助我们了解信号的时域特性和动态行为。
MATLAB是一个功能强大的数学软件,其中的信号处理工具箱可以方便地进行时域分析。
首先,我们需要将信号载入到MATLAB中。
MATLAB支持多种载入信号的方式,如读取文件、生成随机信号或者使用MATLAB中的内置信号。
如果有信号文件,我们可以使用`audioread`函数将音频文件加载到MATLAB中。
如下所示的代码将导入名为`audio.wav`的文件并存储为`y`变量:```matlab[y, Fs] = audioread('audio.wav');```其中,`y`是一个包含音频数据的向量,`Fs`是采样率。
第二步是绘制信号波形。
通过使用`plot`函数,我们可以可视化信号的时域波形。
以下代码将绘制信号`y`的波形:```matlabt = (0:length(y)-1)/Fs; % 计算时间轴plot(t, y);xlabel('Time (s)');ylabel('Amplitude');title('Time Domain Analysis');```这将绘制信号`y`的时间波形,其中x轴表示时间,y轴表示信号的幅度。
接下来,我们可以计算信号的功率谱密度(PSD)。
功率谱密度是用于描述信号频谱特性的一种方法。
MATLAB提供了`pwelch`函数用于计算功率谱密度。
以下代码计算信号`y`的功率谱密度:```matlab[p,f] = pwelch(y,[],[],[],Fs); % 计算功率谱密度plot(f, 10*log10(p));xlabel('Frequency (Hz)');ylabel('Power Spectral Density (dB/Hz)');title('Power Spectral Density');```这将绘制信号`y`的功率谱密度图,其中x轴表示频率,y轴表示功率谱密度。
MATLAB中的信号采集与处理技巧分享
MATLAB中的信号采集与处理技巧分享在信号处理领域,MATLAB是一款强大而常用的工具。
它提供了许多方便的函数和工具箱,可以帮助工程师们更加高效地采集和处理信号。
本文将分享一些在MATLAB中信号采集和处理的技巧,希望对读者有所帮助。
一、信号采集信号采集是信号处理的第一步,而在MATLAB中,有几种常见的方法可以采集信号。
1. 读取文件:MATLAB支持多种文件格式的读取,如.wav、.mp3等。
通过使用`audioread`函数可以方便地读取音频文件,并将其转换为MATLAB的矩阵形式,以便后续处理。
2. 录制音频:使用MATLAB提供的录音功能,可以通过调用`audiorecorder`对象来录制音频。
首先需要创建一个录音对象,并设置采样率、位深等参数。
然后,使用`record`函数开始录制音频,并使用`getaudiodata`函数获取录制的音频数据。
3. 采集外部设备信号:如果需要采集来自外部设备的信号,可以使用MATLAB提供的数据采集工具箱。
该工具箱支持与不同类型的硬件设备通信,如AD/DA转换器、传感器等。
通过设置相应的参数,可以实现对外部信号的采集。
二、信号处理信号处理是通过一系列的算法和方法对信号进行分析和处理的过程。
MATLAB 提供了许多函数和工具箱,可以帮助工程师们完成各种信号处理任务。
1. 时域分析:时域分析是对信号的时间特性进行分析。
MATLAB中的`plot`函数可以绘制信号的时域波形图。
使用`fft`函数可以进行傅里叶变换,将信号从时域转换为频域,并使用`abs`函数求取幅度谱。
另外,可以通过调整窗函数的类型和长度,对信号进行窗函数处理,以避免频谱泄漏等问题。
2. 频域分析:频域分析基于信号的频谱特性进行分析。
MATLAB提供了`spectrogram`函数和`pwelch`函数等用于计算信号的短时傅里叶变换和功率谱密度的函数。
通过观察频谱,可以了解信号的频率分布和谐波情况,从而做出相应的处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
语音信号的时域与频域分析
一、用MATLAB实现语音信号的时域分析
1.MATLAB程序代码
(1)由麦克风采集语音数据,将采集的数据存成WAV文件(采样率为8000Hz),存在本人的文件夹中。
所用程序代码为:
clear;
close all;Fs=8000;
y=wavrecord(5*Fs,Fs,'double');wavwrite(y,'f:\\a');
soundview(y,Fs,'name')
(2)读取WAV文件,显示语音信号的波形。
所用程序代码为:
x=wavread('f:\\a.wav');
figure;plot(x);
axis([0,size(x,1),-0.35,0.3]);%坐标轴范围
title('语音信号时域波形');
xlabel('样点数');
ylabel('幅度');
(3)读取WAV文件,计算并显示语音的短时能量(窗函数为矩形窗,帧长为20)。
所用程序代码为:
x=wavread('f:\\a.wav');
x=double(x);
f=enframe(x,20,100);
energy=sum(abs(f),2);
subplot(2,2,1);plot(x);
axis([0,size(x,1),-0.7,0.9]);
title('语音信号时域波形');xlabel('样点数');
ylabel('幅度');subplot(2,2,2);plot(energy);
title('语音信号的短时能量');
legend('帧长LEN=20');
f=enframe(x,20,200);
energy=sum(abs(f),2);
subplot(2,2,3);plot(energy);
title('语音信号的短时能量');
legend('帧长LEN=100');f=enframe(x,20,400);energy=sum(abs(f),2); subplot(2,2,4);plot(energy);title('语音信号的短时能量');legend('帧长LEN=200');(4)读取WAV文件,计算并显示语音的短时过零率(窗函数为矩形窗,帧长为256,帧移为128),所用程序代码为:
x=wavread('f:\\a.wav');
x=double(x);
LEN=100;INC=100;
f=enframe(x,LEN,INC);%分帧%计算短时过零率
z=zeros(size(f,1),1);
difs=0.01;
for i=1:size(f,1)
s=f(i,:);
for j=1:(length(s)-1)
if s(j)*s(j+1)<0&abs(s(j)-s(j+1))>difs;
z(i)=z(i)+1;end end end
subplot(2,1,1);
plot(x);
axis([0,size(x,1),-0.35,0.3]);
title('语音信号时域波形');xlabel('样点数');ylabel('幅度');subplot(2,1,2);plot(z); title('语音信号的短时过零率');xlabel('帧数');ylabel('短时过零率');
(5)读取WAV文件,当窗函数为矩形窗、帧长为20时,计算一帧浊音的短时自相关函数所用的程序代码为:
x=wavread('f:\\a.wav');
x=double(x);LEN=100;INC=100;
f=enframe(x,LEN,INC);
ff=f(72,:);%选取一帧浊音信号
ff=ff'.*rectwin(length(ff));%计算短时自相关
N=LEN;
R=zeros(1,N);
for k=1:N
R(k)=sum(ff(k:N).*ff(1:N-k+1));
end
for k=1:N
R1(k)=R(k)/R(1);
End
subplot(2,1,1);plot(ff);
axis([0,N,-0.5,0.5])
title('加矩形窗的语音帧');xlabel('样点数');ylabel('幅度');
subplot(2,1,2);plot(R1);
axis([0,N,-1,1])
title('加矩形窗的短时自相关函数');xlabel('k');ylabel('R(k)');
2.图像及结论
(1)利用8000Hz的采样频率对输入的语音信号进行采样,采样点数为40000个,持续时间为4秒,存储格式为double。
之后将数字语音数据写入F盘的a.wav文件,这段波形是读音为’ke’的波形,并通过放音设备进行回放。
回放的GUI界面如图1所示,通过该界面可以观察采集的语音信号。
图1 用soundview函数显示的语音信号
(2)将a.wav文件读取出来,并显示文件中的语音信号波形,显示的波形如图2所示。
该波形是汉语拼音“ke”的时域波形。
从图2可以看出,[K]是清音,它的波形峰值较低;[e]是浊音,它的波形峰值较高。
图2语音“ke”的时域波形
(3)当帧长取不同值时计算语音信号的短时能量,如图3所示。
从图3可以看出,浊音短时能量大,短时平均幅度大,短时过零率低,浊音具有较强的能量值,音段内隐藏信息的能力高。
清音短时能量小,短时平均幅度小,能量值较低,音段内隐藏信息的能力较低;
图3不同帧长对应的短时能量
(4)读取a.wav中的语音数据,之后计算每一帧的短时过零率,最后将原始语音信号和短时过零率显示出来,如图4所示。
从图4可以看出,清音的过零率较高,浊音的过零率较低。
图4短时过零率
(5)读取a.wav中的语音数据,之后对数据进行分帧加窗处理,帧长为256,帧移为128。
选取其中的一帧浊音(第*帧)并计算这帧的短时自相关函数。
当窗函数分别为矩形窗和汉明窗时,截取的语音信号和短时自相关函数如图5和图6所示。
从图5和图6可以看出,矩形窗能够比汉明窗更明显的显示出第一个峰值。
当窗函数为矩形窗,不同帧长(帧移=帧长)的一帧浊音对应的短时自相关函数如图7和图8所示。
从图7和图8可以看出,帧长越长,越容易区分其最大值。
当窗函数为矩形窗,帧长为256,帧移为128,选取一帧清音,获得的短时自相关函数如图9所示。
从图5和图9可以看出,浊音具有明显的周期性,清音无明显周期。
图5加矩形窗的短时自相关函数图6加汉明窗的短时自相关函数。