matlab声源定位算法实现_MATLAB程序

matlab声源定位算法实现_MATLAB程序这是通过传统互相关的方法来进行声源定位的程序,做完互相关之后,红色标注的程序行,应该如何理解呢,是通过什么方法来实现最终延迟差的估计的呢?clclearallcloseall%%%*各参数设置*%–声源相关参数fm=2000;%Hz:信源调频信号最高频率周期0.5msTs=0.2;%s:信源周期0.2s%–采样和信号处理相关参数fs=10*fm;%采样率…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

这是通过传统互相关的方法来进行声源定位的程序,做完互相关之后,红色标注的程序行,应该如何理解呢,是通过什么方法来实现最终延迟差的估计的呢?

cl

clear all

close all

%%

% *各参数设置*

%–声源相关参数

fm=2000;    %Hz: 信源调频信号最高频率 周期0.5ms

Ts=0.2;     %s: 信源周期 0.2s

%–采样和信号处理相关参数

fs=10*fm;   %采样率 也就是50us采一次样

ts=1/fs;    %采样间隔

T=0.2;      %s: 搜集数据T秒,计算一次位置

tMic=0:1/fs:T-1/fs;   %接收数据时间

nMic=length(tMic);    %接收数据长度

Rlen=nMic; %做相关的长度

%–物理参数设置

v=340;      %m/s: 音速

SNR=-10;    %dB

%–声源和MIC位置

Lco_S = [20,30];

Loc_A = [10,0];

Loc_B = [0,10];

Loc_C = [20,0];

%%

% *模拟声源信号及各MIC接收到的信号*

%–产生声源

t = 0:ts:0.4; %假设声波持续时间0.4秒,也就是有2个周期

s = chirp(mod(t,0.2),0,0.2,fm,’linear’);%源信号

%–画出声源的波形

figure();

plot((1:8001)*0.05,s);

xlabel(‘时间/\itms’);

ylabel(‘振幅’);

title(‘声音信号’);

%–计算信源与个MIC之间的距离

dis_SA = sqrt(sum((Lco_S-Loc_A).^2));

dis_SB = sqrt(sum((Lco_S-Loc_B).^2));

dis_SC = sqrt(sum((Lco_S-Loc_C).^2));

%–信源到MIC的时间延迟

Lag_SA = dis_SA/v;

Lag_SB = dis_SB/v;

Lag_SC = dis_SC/v;

%–转化成相差点数

diff_AB =round((Lag_SA-Lag_SB)/ts);

diff_AC =round((Lag_SA-Lag_SC)/ts);

%–MIC接收到的数据

sigMicA=s(1:nMic);

sigMicB=s(1+diff_AB:nMic+diff_AB);

sigMicC=s(1+diff_AC:nMic+diff_AC);

sigMicA=awgn(sigMicA,SNR,’measured’);

sigMicB=awgn(sigMicB,SNR,’measured’);

sigMicC=awgn(sigMicC,SNR,’measured’);

%–信号时域图

figure();subplot(3,1,1);

plot((1:4000)*0.05,sigMicA);

subplot(3,1,2);

plot((1:4000)*0.05,sigMicB);

subplot(3,1,3);

plot((1:4000)*0.05,sigMicC);

%%

% *用CC(Cross-Correlation)算法估计时延差*

%CC算法求延时差

rMicAB=xcorr(sigMicA,sigMicB,Rlen,’biased’); %求MIC A、B信号互相关

rMicAC=xcorr(sigMicA,sigMicC,Rlen,’biased’); %求MIC A、C信号互相关

[val,DelayDifferAB]=max(rMicAB);  %互相关最大值的位置体现了延迟差。

[val,DelayDifferAC]=max(rMicAC);

%最终延迟差估计

delayDifferABRes=-(Rlen+1)+rMicAB(DelayDifferAB+(-3:3))*(DelayDifferAB+(-3:3))’/sum(rMicAB(DelayDifferAB+(-3:3)));

delayDifferACRes=-(Rlen+1)+rMicAC(DelayDifferAC+(-3:3))*(DelayDifferAC+(-3:3))’/sum(rMicAC(DelayDifferAC+(-3:3)));

distDiffAB=delayDifferABRes/fs*v;

distDiffAC=delayDifferACRes/fs*v;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190841.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java动态拼接SQL–02–Jpa「建议收藏」

    Java动态拼接SQL–02–Jpa「建议收藏」本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求。这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring整合的环境中实现。如果需要了解该框架的入门,百度一下,很多入门的介绍。在这篇文章的接下来一篇,会有一个系列来讲解mybatis,这个系列从mybatis的入门开始,到基本使用,和spring整合,和第

    2022年6月10日
    257
  • JavaScript数组_java数组排序

    JavaScript数组_java数组排序JavaScript数组常用方法(最全)今天我们对JavaScript的数组以及对象的方法做一个总结,方便与以后的开发与查询,多多收藏哦!1.push()push方法可以向数组的末尾添加一个或者多个元素,并返回新的长度.2.pop()pop()方法用于删除并返回数组的最后一个元素。3.unshift()unshift()方法可向数组的开头添加一个或更多元素,并返回新的长度。4.shift()shift()方法用于把数组的第一个元素从其中删除,并返回第一

    2025年7月17日
    4
  • App界面原型设计工具「建议收藏」

    App界面原型设计工具「建议收藏」首先,一款优秀的移动APP界面原型设计工具应该具备:  ①.支持移动端演示(随时随地演示给BOSS,厕所&食堂&电梯…以体现我是那么的敬业——长点工资必备)  ②.组件库(高效复用,谁用谁知道)  ③.可以快速生成全局流程(程序猿看不懂拆解的,给丫的看这个)  ④.在线协作(多个PM狗一起用)  ⑤.手势操作、转场动画、交互特效…(这些都不需要,留给专业的交互、视觉,

    2022年6月16日
    33
  • android开发 不注意的异常

    android开发 不注意的异常

    2022年1月29日
    43
  • 2021 Pycharm汉化教程,两种方法,带图讲解,简洁明了

    2021 Pycharm汉化教程,两种方法,带图讲解,简洁明了方法一:软件内安装汉化包第一步:打开设置①点击‘File’——Mac系统settings/preferrnces②点击‘Settings’第二步:安装官网自带的中文插件①点击‘Plugins’②点击‘MarKetplace’③输入‘chinese’④选中‘Chinese(Sinplified)LanguagePack/中文语言包’⑤点击‘Install’等插件下载好之后,会显示‘RestartIDE’,点击‘RestartID

    2022年5月25日
    49
  • 从零开始搭建 web 聊天室(一)

    从零开始搭建 web 聊天室(一)本篇将介绍如何快速、简便地使用socket.io库搭建一个web在线聊天室。前端并没有使用任何框架。后端使用express框架搭建简易的后端。socket.io库本质上是基于websocket上进行封装。改变了以往只能前端发送请求,后端才能返回给前端信息,这样的一问一答形式。实现了前后端双向通信,即后端也可以主动push信息到前端。websocket尤其适用于在线聊天或者实时交互的场景。已经广泛用于直播平台、视频平台等。本篇实现:最基本的前后端信息交互。代码地址:https

    2022年6月22日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号