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;

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 软件工程保研浙江大学、南京大学、同济大学、中山大学经验分享

    软件工程保研浙江大学、南京大学、同济大学、中山大学经验分享一、个人基本情况学校:某末流985专业:信息管理与信息系统排名:1平均成绩:91.23科研与比赛:一个国家级大创,互联网+国家级银奖,一篇论文(未发表),还有一堆没用什么用的水奖二、保研经验分享1.中山大学数据科学与计算机学院我参加的是中山大学的夏令营,最后的结果是考核合格(拟录取)。由于疫情原因,所以这次让我们做了一个进行自我介绍的PPT,面试时间总共为20分钟,有8—10分钟的时间进行PPT自述(中文),讲解完后老师会用英文提问,当时问我的问题是:介绍你最喜欢的城市、介绍

  • 一篇带你从小白到入门的vue教程

    一篇带你从小白到入门的vue教程一篇带你从小白到入门的vue教程

  • [转载]【电子书下载神器】太给力了!你还找不到想要的电子书吗?

    [转载]【电子书下载神器】太给力了!你还找不到想要的电子书吗?1.电子书下载网(推荐)读远:发掘优质电子书资源Kindle精读书库Hi!PDAHi!PDAreadfree.me子乌书简 苦瓜书盘mLook看书掌上书苑-主页新浪微盘 | 免费网盘    2.电子书网站  E书吧-免

  • 她不在

    她不在她不在

  • 【Custom Mutator Fuzz】AFL++自定义突变API「建议收藏」

    【Custom Mutator Fuzz】AFL++自定义突变API「建议收藏」前言其实这篇是临时加进来的,因为下一篇文章是libprotobuf+AFL++的内容,所以写的时候需要使用AFL++自定义突变的API,觉得还是需要单独写一篇API的介绍,一共十一个方法,也不是很多,下一篇文章就不再用大篇幅描述API了~编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノPS:文章末尾有联系方式,交个朋友吧~本文链接:模糊测试系列往期回顾:【CustomMutatorFuzz】Libprotobuf+LibFuzzerCustomM.

  • Windows中IIS和Serv-U两种方式搭建FTP服务[通俗易懂]

    Windows中IIS和Serv-U两种方式搭建FTP服务[通俗易懂]FTP是文件传输协议。用于互联网双向传输,控制文件下载空间在服务器复制文件从本地计算机或本地上传文件复制到服务器上的空间。iis搭建ftp站点Windows中使用IIS搭建ftp站点需要先在控制面板中启动IIS服务,步骤如下:选择程序点击“启用或关闭Windows功能”按如下启用相关Windows功能:至此,IIS服务已启用,直接搜索iis并打开:展开左侧选项,右击“网站”,…

发表回复

您的电子邮箱地址不会被公开。

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