在电子信息工程领域,有许多问题的解决需要我们估计一个随机过程在频率域上的功率分布,这样的问题有很多,譬如:设计滤波器消除噪声,信号的回波抵消,信号的特征抽取与表示等等。

谱估计的分类,通常分为两类,一类是参数法谱估计,一类是非参数法谱估计。参数法谱估计通常对数据进行建模,如把数据建模成滑动平均模型(Moving

Average),或者自回归(Autoregressive)模型,而非参数法除了要求信号满足广义平稳之外,没有其它的统计假设。与非参数法相比较,参数法的优点是在一个给定的数据集合上能够有较少的偏差(Bias)与方差(Variance).

对于非参数法谱估计,常用的方法有:

• 周期图法

• Bartlett 法(平均多个周期图, 采用不同数据块)

• 自相关法 (Blackman-Tukey 法)

Abstract

In the electronics and information engineering field, there are

many problems we need to estimate a random process in frequency

domain of the power distribution, so that there are many problems,

such as: designing filters to eliminate noise and echo cancellation

signal, the signal feature extraction and said so.

Classification of spectral estimation is usually divided into

two categories, one is parametric spectral estimation, a class of

non-parametric spectral estimation. Parametric spectrum estimation

is usually the data model, such as the data modeling into a moving

average model (Moving Average), or autoregressive (Autoregressive)

model, rather than the parametric approach other than the demand to

meet the wide-sense stationary signal, there is no other

statistical assumptions. Wears with the non-parametric comparison,

the parameter method has the advantage of a given data sets can

have less bias (Bias) and variance (Variance).

For non-parametric spectral estimation, commonly used methods

are:

• Periodogram

• Bartlett method (average number of cycle maps,

using different data blocks)

• Auto-correlation method (Blackman-Tukey

method)

本论文主要采用非参数法谱估计,对语音信号进行功率谱估计,采用自相关法来对功率谱进行估计。

正文

功率谱估计的方法有直接法(也叫周期图法)、间接法、Bartlett法和welch法等,本文中实现采用自相关法

(Blackman-Tukey 法)来对一语音信号进行功率谱估计。

自相关法功率谱估计的原理:

由Wiener-Khintchine 定理,一个平稳随机过程的功率谱为自相关函数的

复利叶变换:

其中,rxx(m)为平稳随机过程的自相关函数。

由(1-1)式,在无限长序列rxx(m)上采用有限长窗口w(m)(矩形窗)截取,就可以获得平稳随机过程的功率谱的估计。

问题分析:根据实验原理,我们知道,首先要用Wavread函数读入wav文件中的数据,然后再对读入的数据进行处理。读入后,发现一共为10715个点。由于语音信号是一种典型的非平稳信号,而在10~20ms内可以认为是短时平稳的。所以要对数据进行分帧,用buffer函数可以实现这种功能。由于wav的采样率为16000Hz,所以应有20*16000/1000=320个采样点。又根据原理要对每帧进行基二fft算法,所以,选择每帧512个采样点。又由于每帧之间具有相关性,所以进行50%的帧重叠以保持帧与帧之间的相关性。分完帧后,对其中的一帧进行自相关函数的运算,由于自相关函数与信号的功率谱是一对复利叶变化对,再进行复利叶变换,再转化成以分贝(dB)为单位的数值,就可以求解出功率谱了。

可能用到的matlab 指令:

Wavread()音频信号的读取

buffer( )用于信号分帧

fft() 快速傅立叶变换

xcorr() 求自相关函数

窗函数: hamming(),hanning(),blackman()。

源程序代码:

W0=wavread('ExperimentalData.wav'); %原语音信号读入

figure;plot(W0);

Cx1=buffer(W0,512,256); %分帧

Cx2=Cx1(:,3); %取出其中一帧

Cx3=Cx2';

Cx=xcorr(Cx3,'unbiased');

Cxk=fft(Cx); %快速傅里叶变换

P=20*log10(abs(Cxk)); %求解PSD

figure;plot(P);title('Pxx');

n=input(''); %输入所加窗的长度

W2=hanning(n);figure;plot(W2);

windows=windowing(Cx,W2);

figure;plot(windows);title('hanning'); %hanning

W3=blackman(n);figure;plot(W3);

windows=windowing(Cx,W3);

figure;plot(windows);title('blackman'); %blackman

W4=hamming(n);figure;plot(W4);

windows=windowing(Cx,W4);

figure;plot(windows);title('hamming'); %hamming

其中调用的子函数如下(实现加窗处理的功能):

function windows=windowing(A,B);

m=min(length(A),length(B));

for k=1:m,

windows(k)=A(k).*B(k);

end;

实验结果:在输入n=1023时;

原始语音信号

hanning windowing

Blackman

windowing

hamming window

实验结果分析:在经过分帧后,对其中的一帧进行自相关运算,再进行快速傅里叶变换,就能求解出功率谱,对以上实验结果分析可知,能用此种方法解决信号的功率谱的估计,对于不同的加窗的长度都能实现对自相关函数的加窗处理。

结束语

通过本次实验,了解了如何用自相关法对语音信号进行功率谱的估计,以及所涉及到的知识和思想方法,更好的让我理解了通信原理中的所学过的一些知识,在语音信号处理中是需要对信号进行分帧处理,在分帧时,由于语音信号各帧之间的相关性,所以要保留一部分相同的数据,这样才能保证处理的完整性,在对一帧数据进行处理时,如果采用自相关法,需要进行自相关函数求解,快速傅里叶变换,了解了自相关函数和信号的功率谱是一对傅里叶变换对的结论,对信号的功率谱进行了很好的估计,对语音信号的性质能很好的分析,更深入理解了其原理及其方法。

参考文献

[1]、《数字信号处理》——理论、算法与实现,清华大学胡广书编著,北京:清华大学出版社, 1997。

[2]、《现代谱估计原理与应用》[美]S.M.凯依著,黄建国等译,北京:科学出版社,1994。

总结

在刚开始对语音信号处理时没有用的分帧这样的处理方法,而是对将该语音信号作为一帧进行处理,导致求解出来的功率谱非常的陡峭,不是很平滑,所以在后来的程序中,进行分帧处理后,所求出的功率谱明显平滑。

在此次所做的程序设计中,还有许多的不足之处与需要改进的地方,在处理语音信号时,只是对其中的一帧进行了处理,缺没有对所有的帧进行统计,这样就不具有代表性,不能代表整个语音信号的特性;在处理对自相关函数加窗时,加窗处理过程感觉有点简单,只是取窗和自相关函数长度的较小值作为基准,进行加窗处理,这只是一般的想法,其实可以更近一步;让用户输入一个所需要加窗长度时,如果用户输入的长度不符合要求的时,应当给出提示,让用户重新输入,而现有的程序只能对所输入的数据进行加窗处理,而且只能处理一次变退出了程序,没有健壮性。

在对其中的一帧进行处理时,由于这一帧的长度是固定的,所有不需要再进行加窗截断处理,在进行自相关函数运算时,自相关函数中所带的参量也是需要考虑的,由于是自相关,所以后面一个变量可以缺省不写,也能求出;在快速傅里叶变换时,在此程序中默认的长度就是自相关函数的长度,如果需要更改FFT的长度时,又应该如何处理,这是应该去考虑的,在进行傅里叶变换后所得出的结果直接进行功率谱的估计是不行的,只有转化成以分贝(dB)为单位,才能估计出功率谱。

在设计过程中,由于加窗的次数较多,所以定义了一个功能函数,调用起来方便,减少了复杂度,使程序的运行更为迅速,同样的,在加窗时,不是定义好了窗长,而是让用户自己输入,更加具有实际性。

在用自相关进行功率谱估计时,能不能将其算法的复杂性进行简化,和现在的运算方法比较的话,可以大大减少运算量,加窗处理时,能不能更加的符合实际,使得加窗处理能真正的别运用,语音信号的性质能很好的分析出来,语音信号处理方法更实际,更简明,更迅速。

自相关法谱估计matlab,自相关法估计功率谱密度相关推荐

  1. 功率谱估计的参数模型方法---AR模型谱估计:自相关法协方差法

    功率谱估计的参数模型方法---AR模型谱估计:自相关法&协方差法 信号的线性模型(零极点模型/Pole-Zero Modeling) (1)AR模型(自回归/全零点模型) (2)MA模型(移动 ...

  2. matlab 计算周期信号功率谱密度,功率谱密度相关方法的MATLAB实现

    功率谱密度相关方法的MATLAB实现 1. 基本方法 周期图法是直接将信号的采样数据x(n)进行Fourier变换求取功率谱密度估计的方法.假定有限长随机信号序列为x(n).它的Fourier变换和功 ...

  3. MATLAB概率密度函数估计

    MATLAB概率密度函数估计 2016-03-23 16:12:24 分类: C#/.net 函数:ksdensity 功能:根据给定的数据,估计概率密度分布 示例: 1. 正态分布 x = rand ...

  4. 相空间重构中延迟时间tau的选择:自相关法(matlab实现)

    相空间重构技术中有两个关键参数:延迟时间tau和嵌入维数m 使用自相关法确定延迟时间tau,主要思想在于通过计算原信号的自相关函数,找到自相关函数值下降到初始值R(0)时的1-1/e倍时的延迟时间ta ...

  5. matlab自相关法,Matlab计算自相关和互相关

    ###1. $x(t)=sinc(10t),y(t)=rect(10t)$,利用Matlab求$x(t),y(t)$的自相关函数及互相关函数 rect=@(x)(abs(s)<=0.5);//定 ...

  6. 谱估计matlab,利用MATLAB工具箱比较三种谱估计算法

    总第175期2009年第1期 舰船电子工程 Ship Electr onic Engineering V o l.29No.1 96 利用MATLAB工具箱比较三种谱估计算法* 盖明明1)郗海龙2)姜 ...

  7. 空间谱估计matlab实现,空间谱估计理论与算法------程序.rar

    [实例简介]包含空间谱估计理论与算法(王永良)课本对应各章的matlab程序 MATLAB程序:第2章_空间谱估计基础: 第3章_线性预测算法:第4章_多重信号分类算法:第5章_最大似然及子空间拟合算 ...

  8. 空间谱估计matlab实现,相干信号空间谱估计测向Matlab仿真研究

    相干信号空间谱估计测向Matlab 仿真研究 1. 引言 由于多径传播.电磁干扰等因素的影响,相干信源存在的电磁环境是经常碰到的.当空间存在相干源时,经典的超分辨DOA 估计方法:MUSIC 算法和E ...

  9. 瞬时频率函数matlab,瞬时频率估计的相位建模法及Matlab的实现

    第 3 期 2003 年 5 月 CHINA MEASUREMENT TECHNOLOGY 中国测试技术 No. 3 May ,2003 瞬时频率估计的相位建模法及 Matlab 的实现 冯松立 陈高 ...

  10. 频偏纠正matlab实现,频偏估计matlab代码

    瑚伽㈣咖,<第n次仿真) 嘎第"次仿真) 算法仿真频偏估计算法的全数字仿真采用Matlab6.5. 图5原频谱估计算 法的性能曲线 图6简化了的频谱估计 算法的性能曲线...... 通 ...

最新文章

  1. JDK与JRE的关系和path的作用浅谈
  2. netty做一个posp的网络_皑云网络——接手一个新的SEM竞价账户怎么做?
  3. 【计算理论】计算复杂性 ( coNP 问题 | coNP 完全 | P、NP、coNP 相互关系 )
  4. Java-Web JSP、Cookie和Session域对象
  5. 百万局对战教AI做人,技术解读FPS游戏中AI如何拟人化
  6. paip.最新的c++ qt5.1.1环境搭建跟hello world
  7. mysql全文索引中文问题的解决(转)
  8. Linux Vi的使用
  9. python png 背景透明_python – Pygame:在png图像中将所有白色像素转换为完全透明...
  10. akka mysql_Spray + Akka高性能异步IO并发
  11. linux如何查看端口被哪个进程占用?
  12. Spring Boot 整合监听器
  13. 编译Notepad2语法高亮记事本源码心得
  14. DS18B20使用说明
  15. 批量打印Word文档并记录(一)
  16. 基于n元语言模型整句拼音汉字转换
  17. 为什么JBX写的代码在编译时,总是少字符呢?
  18. CTF实验吧-登陆一下好吗??【false SQL注入】
  19. 2021-06-10 MYSQL存储过程与触发器作业
  20. 我的世界服务器连接协议,go-mc: Minecraft(我的世界)各种协议的Go实现

热门文章

  1. 2020-12-09
  2. 2020-11-16学习总结: sass配置
  3. XYOJ1234出租车费
  4. MSSQL父子关系表的SQL查询(SQL Query for Parent Child Relationship)
  5. Office 2010安装1402错误
  6. PHP域名授权查询源码,域名授权系统V1.2完整PHP源码下载_域名授权正版查询系统_源码完全开源...
  7. MSP430 单片机 读取 程序 LM75A LM75 温度传感器
  8. python怎么写阶乘_python阶乘怎么写
  9. QQ连连看外挂--基于LAScript
  10. 基于Labview的串口通信助手,附带免费的exe程序和vi文件(有意见或学习讨论欢迎交流)