一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【声源定位】基于matlab广义互相关声源定位【含Matlab源码 548期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、广义互相关声源定位简介

基于麦克风阵列的声源定位技术的研究在国内受到了越来越多的关注,麦克风阵列的声源目标定位技术可以定义为利用麦克风阵列采集声源目标,经过一系列对声音信号的分析操作与处理来确定声源的位置.与雷达探测技术以及其他探测技术相比,该技术有很多特点,比如因其采用被动式工作原理,所以探测隐蔽,不容易被发现.目前,基于麦克风阵列的定位技术逐渐变成研究的主流,涉及视频会议系统、汽车鸣笛定位、人机交互等.

经过多年发展,基于麦克风阵列的声源定位技术已有较多的理论和方法,定位方法大体可以分三类:基于到达时延估计方法、基于最大输出功率的可控波束形成方法、高分辨率谱估计方法.基于时延估计法主要根据声源信号到达两个不同位置麦克风的时间差计算出声源位置相对一组麦克风所在的双曲面,通过多个双曲面交集来确定声源位置;基于最大输出功率的可控波束形成方法主要利用波束形成技术,不断调整阵列信号的接收方向,同时对整个接收空间进行扫描,接收能量最大的方向即为声源方向;高分辨率谱估计方法主要是利用各个阵元信号之间的相关矩阵,通过计算相关矩阵的空间谱获得声源的方向角.其中,基于时延估计的定位算法简单、定位精度高,是目前声源定位信号处理中常用的方法.

1 基本模型
声波在传播的过程中会发生衰减,而衰减因子与传播的距离成正比,因此声波从声源到达不同阵元时幅度相差不大,而因延迟产生的相位差则较大.根据声源与麦克风阵列之间的距离r=2D/λ,可以将阵列模型分为近场和远场模型.通常定义声源与阵列之间的距离为远近场临界值,其中λ为声波波长,D为阵列孔径.当麦克风阵列与声源之间的距离r<2D/λ时,阵列处于近场模型,麦克风阵列接收的声波是球面波.反之,当r>2D/λ时,阵列处于远场模型,声源到各阵元的距离差相比于声源到麦克风阵列的距离可以忽略不计,阵元间接收信号仅存在相位延迟且可将声波看作平面波.

假设线阵麦克风阵列的所有阵元接收到的信号只包含直达信号与加性噪声,并且每个麦克风之间的噪声相互独立,如图1所示.其中,S表示声源,M1,M2,M3,⋯,MN表示N个麦克风,根据空间采样定理,每相邻两个麦克风之间的间距在选择上必须满足d≤λ(min)/2

图1 信号模型
声源信号s(t)呈辐射状态传播,且信号的能量与麦克风和声源间的距离成反比,则第i(i=1,2,3,…,N)个麦克风Mi所接收到的信号xi(t)为:

其中,αi表示声源信号s(t)的传播衰减因子,τi表示声源S到达第i个麦克风的时延,ni(t)表示第i个麦克风接收的加性噪声.

2 互相关算法
基于时延估计的声源定位算法主要分为两个步骤:第一步,估计声源信号到达各个麦克风之间的时间差;第二步,利用上一步所得到的时间差和声源与麦克风阵列之间的几何关系来估计声源位置.在声源定位系统中,时延估计技术至关重要,时延估计的精度直接影响定位的精度.常用的时延估计算法是互相关法.

互相关函数是描述随机信号x (t),y (t)在任意两个不同时刻s,t的取值间的相关程度,其定义为:

对于连续函数,有定义:

对于离散数据,有定义:

从以上定义式中可以看到,互相关函数和卷积运算类似,也是两个序列滑动相乘.区别在于互相关的两个序列都不翻转,直接滑动相乘,求和;卷积的其中一个序列需要先翻转,然后滑动相乘,求和.所以,f(t)和g (t)做相关等于f*(t)和g (t)做卷积.

根据维纳-辛钦定理,互相关函数与其互功率谱密度互为傅里叶变换对,则x1(t)和x2(t)的互相关函数又可以表示为:

其中,X1(ω)和X2(ω)分别为x1(t)和x2(t)的傅里叶变换,Gx1x2(ω)则称为麦克风信号x1(t)和x2(t)间的互功率谱,X2*(ω)为X2(ω)取复共轭.Rx1x2(τ)对应最大峰值处的横坐标即为所要求的时延估计值.

2.1 广义互相关算法
在麦克风信号处理实际模型中,由于存在混响和噪声的影响导致Rx1x2(τ)的峰值不明显,降低了时延估计的精度.因此,广义互相关法利用频域加权函数对信号滤波来突出响应信号部分的频谱成分,抑制噪声部分的频谱,再进行傅里叶反变换IFFT反变到时域,锐化Rx1x2(τ)在时延处的峰值,从而提高时延估计性能.因此得到广义互相关函数Rx1x2(τ),即:

其主要原理如图2所示.

图中(·)*表示取复共轭.与基本互相关相比,广义互相关算法增加了加权运算.

图2 广义互相关时延估计算法流程图
由于有限窗长和低信噪比的影响,选择合适的加权函数是一个难点,传统的广义互相关算法有基本互相关(CC),ROTH,SCOT,PHAT等几种加权方式.其中,SCOT和SCOT加权因子分别如式(7)和式(8)所示:

三、部分源代码

clear all;
close all;

四、运行结果

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.
[3]李保伟,张兴敢.基于广义互相关改进的麦克风阵列声源定位方法[J].南京大学学报(自然科学). 2020,56(06)

【声源定位】基于matlab广义互相关声源定位【含Matlab源码 548期】相关推荐

  1. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  2. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  3. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  4. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  5. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  6. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

  7. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  8. 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】

    一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...

  9. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  10. 【Matlab人脸识别】KL变换人脸识别【含GUI源码 859期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]KL变换人脸识别[含GUI源码 859期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

最新文章

  1. hbase参数配置及优化
  2. 使用emu8086学习汇编 int 21h 指令
  3. 无线鼠标接收器对码软件_接收器太小容易丢 这几招记好就不怕
  4. why there is error after adding DocumentHistories
  5. Ubuntu17.04 之 systemd 设置开机启动
  6. 数据结构:单链表和双向链表
  7. delphi DBgrid 使用大全
  8. CSS三大特性的利用注意事项
  9. Android HWUI硬件加速模块浅析
  10. 565.数组嵌套(力扣leetcode) 博主可答疑该问题
  11. mac matlab破解
  12. 虚拟机安装win10 64/32bit系统
  13. 非线性动力学 matlab,非线性动力学matlab
  14. DVR硬盘录像机技术
  15. 修改linux开机启动界面,修改树莓派的开机启动画面,
  16. PHY--PDCCH
  17. python获取股票_python根据股票代码获取当前数据
  18. C++(常函数、常对象)
  19. 高等数学期末总复习DAY18.常数项级数、正项级数、交错级数、绝对收敛
  20. 深入学习Linux摄像头(二)v4l2驱动框架

热门文章

  1. python mock接口返回数据(转载)
  2. tsinsen A1333
  3. 20191123每日一句
  4. 写程序/算法的一点思考
  5. Atitt 常见的拖欠费用的公司与个人黑名单 陕西西部安全网 2007-2008 西安 一个月 25000 西安盛世涅槃 2007 西安 1m 25000 Sicyi msc 2007 n
  6. Atitit 融合战略的艺术 目录 1.1. Os方向 uwp ms。。 1 1.2. Sdk 方向 。ms netcore 1 2. Netcore优点 1 2.1. .NET应用程序可以
  7. Atitit 短信 技术的概论 短信备份 attilax总结 1.1. 短信的历史 1 1.2. 短信长度 160字的长度限制灵感来自对明信片的研究。明信片。大多数明信片上的字符不超过160个
  8. Atitit  技术经理职责与流程表总结
  9. Atitit.md5 实现原理
  10. paip. 混合编程的实现resin4 (自带Quercus ) 配置 php 环境