【聲源定位】基於matlab不同信噪比下麥克風接收訊號【含Matlab原始碼 546期】
阿新 • • 發佈:2021-06-27
一、簡介
基於matlab不同信噪比下的麥克風接收訊號
二、原始碼
clear all; close all; clc %****************************************************% [s,fs]=wavread('C9_1_y.wav'); s=s/max(abs(s)); sound_length = 6400; %裝載房間衝激響應 load h.mat; %麥克風1的訊號 s1=conv(s,h1); s1=s1(1:sound_length); %麥克風2的訊號 s2=conv(s,h2); s2=s2(1:sound_length); %****************************************************% %新增白噪聲 %SNR=20dB s1_20db = awgn(s1,20,'measured','db'); s2_20db = awgn(s2,20,'measured','db'); %SNR=10dB s1_10db = awgn(s1,10,'measured','db'); s2_10db = awgn(s2,10,'measured','db'); %SNR=0dB s1_0db = awgn(s1,0,'measured','db'); s2_0db = awgn(s2,0,'measured','db'); %SNR=-5dB s1_m5db = awgn(s1,-5,'measured','db'); s2_m5db = awgn(s2,-5,'measured','db'); figure(1); %顯示原始輸入語音訊號波形 subplot(5,2,1),plot(s1,'k'),title('麥克風1(原始)'),xlabel('取樣點'),ylabel('幅度'); subplot(5,2,2),plot(s2,'k'),title('麥克風2 (原始)'),xlabel('取樣點'),ylabel('幅度'); subplot(5,2,3),plot(s1_20db,'k'),title('麥克風1(SNR=20dB)'),xlabel('取樣點'),ylabel('幅度'); subplot(5,2,4),plot(s2_20db,'k'),title('麥克風2(SNR=20dB)'),xlabel('取樣點'),ylabel('幅度'); subplot(5,2,5),plot(s1_10db,'k'),title('麥克風1(SNR=10dB)'),xlabel('取樣點'),ylabel('幅度'); subplot(5,2,6),plot(s2_10db,'k'),title('麥克風2(SNR=10dB)'),xlabel('取樣點'),ylabel('幅度'); subplot(5,2,7),plot(s1_0db,'k'),title('麥克風1(SNR=0dB)'),xlabel('取樣點'),ylabel('幅度'); function [h]=rir(fs, mic, n, r, rm, src); % 房間脈衝響應 % fs 取樣頻率 % mic 麥克風座標(行向量) % n 虛擬聲源個數 (2*n+1)^3 % r 牆壁反射係數(-1<R<1) % rm 房間尺寸(行向量) % src 聲源座標(行向量) % % h 房間脈衝響應 nn=[-n:1:n]; rms=nn+0.5-0.5*(-1).^nn; srcs=(-1).^(nn); xi=[srcs*src(1)+rms*rm(1)-mic(1)]; % 式(9-2) yj=[srcs*src(2)+rms*rm(2)-mic(2)]; % 式(9-3) zk=[srcs*src(3)+rms*rm(3)-mic(3)]; %式(9-4)
三、執行結果
四、備註
版本:2014a
完整程式碼或代寫加1564658423