最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

【定位問題】基于CC和GCC算法實現近場聲源定位TDOA問題附matlab代碼

2022-04-23 09:50 作者:Matlab工程師  | 我要投稿

1 簡介

聲源定位是許多領域里的一個基本問題.聲源定位技術的研究一直是個研究熱點,涉及到很多技術領域,如聲學,信號檢測,數字信號處理等,有著廣闊的應用前景.目前,該技術在仿人智能機器人上的應用還不是很多.而其作為一種重要的人機交互方式,能夠與視覺交互完美結合,彌補其不足. 通過對各種聲源定位技術的研究和比較,基于到達時延差(TDOA,Timedelay of arrival)的聲源定位技術比較適用.該技術方法的原理不是很復雜,無需很大的計算量,而且實現這種技術的困難較小.對這種技術的研究目前也比較成熟,有著大量的應用.因而對于本課題的研究而言,是一種不錯的選擇.使用TDOA技術,需要完成兩個階段的工作:前一階段運用時延估計算法估算出聲源信號到達各個麥克風之間的TDOA值,即時間差;第二階段根據得到的TDOA值,結合陣列幾何結構關系和空間位置關系,使用空間定位方法來估算聲源的位置.能否得到高精度的TDOA值對整個過程的正確完成相當重要.傳統的GCC算法就是該技術中的一種比較經典的方法.該方法能夠快速有效的對聲源進行定位。

2 部分代碼

clcclear allclose all%%% *各參數設置*%--聲源相關參數fmin=500;fmax=2000; ? ?%Hz: 信源為一頻率漸變的余弦信號,最低頻率fmin,最高頻率fmaxS_last=0.1; ? %s :聲源持續(xù)時間%--采樣和信號處理相關參數fs=3e6; ? %采樣率 ts=1/fs; ? ?%采樣間隔T=0.12; ? ? ?%s: 搜集數據T秒,計算一次位置tMic=0:1/fs:T-1/fs; ? %接收數據時間nMic=length(tMic); ? ?%接收數據長度%--物理參數設置v=34000; ? ? ?%cm/s: 音速%--聲源和MIC位置 ? 單位CMd=30; ? ?%麥克風間距Lco_S = [10,10];Loc_A = [50-d,0];Loc_B = [50,0];Loc_C = [50+d,0];%%% *模擬聲源信號及各MIC接收到的信號*%--產生聲源t = 0:ts:S_last; %假設聲波持續(xù)時間0.2秒 s = chirp(t,fmin,S_last,fmax,'linear');%源信號, 頻率線性遞增的余弦信號nsource=length(s);%--畫出聲源的波形figure();plot(s);xlabel('時間/\itus');ylabel('振幅');title('聲音信號');%--計算信源傳到各MIC之間的延遲點數diff_SA = sqrt(sum((Lco_S-Loc_A).^2))/v/ts;diff_SB = sqrt(sum((Lco_S-Loc_B).^2))/v/ts;diff_SC = sqrt(sum((Lco_S-Loc_C).^2))/v/ts;%--計算信源與個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的時間延遲dis_AC=dis_SA-dis_SC;dis_BC=dis_SB-dis_SC;Lag_SA = dis_SA/v;Lag_SB = dis_SB/v;Lag_SC = dis_SC/v;%--轉化成相差點數diff_AC =round((Lag_SA-Lag_SC)/ts);diff_BC =round((Lag_SB-Lag_SC)/ts);%--MIC接收到的數據sigMicA=zeros(1,nMic);sigMicB=zeros(1,nMic);sigMicC=zeros(1,nMic);sigMicA(1+diff_SA:nsource+diff_SA)=s;sigMicB(1+diff_SB:nsource+diff_SB)=s;sigMicC(1+diff_SC:nsource+diff_SC)=s;%--信號時域圖figure();subplot(3,1,1);plot(sigMicA);subplot(3,1,2);plot(sigMicB);subplot(3,1,3);plot(sigMicC);%%% *用GCC(Generalized Cross-Correlation) Phase Transform 算法估計時延差* if(DelayDifferAC<5000) ?distDiffAC=(DelayDifferAC-1)/fs*v;else distDiffAC=(DelayDifferAC-nMic-1)/fs*v;endA=distDiffBC;B=distDiffAC;M=4*A^3-B^3+6*A*B^2-10*A^2*B+4*d^2*A-2*d^2*B;N=-8*A^2-2*B^2+8*A*B;r3=M/N;M1=4*A^3-B^3+4*A*B^2-6*A^2*B+2*d^2*B-4*d^2*A;N1=8*A^2+2*B^2-8*A*B;r2=M1/N1;cos=(r3^2+d^2-r2^2)/(2*d*r3);sin=sqrt(1-cos^2);a=(50-d)+r3*cos;

3 仿真結果

4 參考文獻


博主簡介:擅長智能優(yōu)化算法、神經網絡預測、信號處理、元胞自動機、圖像處理、路徑規(guī)劃、無人機等多種領域的Matlab仿真,相關matlab代碼問題可私信交流。

部分理論引用網絡文獻,若有侵權聯系博主刪除。




【定位問題】基于CC和GCC算法實現近場聲源定位TDOA問題附matlab代碼的評論 (共 條)

分享到微博請遵守國家法律
长宁县| 临湘市| 通辽市| 盘锦市| 高尔夫| 恩平市| 彩票| 波密县| 苍梧县| 晋江市| 太原市| 玉林市| 得荣县| 扎囊县| 象山县| 石棉县| 筠连县| 怀集县| 桃源县| 德化县| 巴彦淖尔市| 泌阳县| 新宾| 巫溪县| 平顶山市| 五台县| 西华县| 高邑县| 莱西市| 连江县| 日照市| 钦州市| 鲜城| 措美县| 郁南县| 金沙县| 宝兴县| 平乡县| 贵州省| 抚州市| 柳河县|