日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

声源定位matlab模拟,matlab声源定位程序的一点小问题

發布時間:2023/12/15 循环神经网络 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 声源定位matlab模拟,matlab声源定位程序的一点小问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是通過傳統互相關的方法來進行聲源定位的程序,做完互相關之后,紅色標注的程序行,應該如何理解呢,是通過什么方法來實現最終延遲差的估計的呢?

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;

總結

以上是生活随笔為你收集整理的声源定位matlab模拟,matlab声源定位程序的一点小问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。