编程语言
首页 > 编程语言> > 【声源定位】基于matlab阵列流形矩阵信号显示【含Matlab源码 549期】

【声源定位】基于matlab阵列流形矩阵信号显示【含Matlab源码 549期】

作者:互联网

一、简介

1 阵列流形A包含了阵列的几何结构、阵元模式、阵元间的耦合、频率等影响。
分辨力:阵列测向中,某方向上对信源的分辨力与该方向附近阵列方向矢量的变化率直接相关。在方向矢量变化较快的方向附近,随着信源角度变化阵列快拍数据变化也大,相应的分辨力也高。
2 对于均匀线阵:
D(θ) - cosθ,
说明信号在0方向分辨最高,而在60方向分辨力已经下降了一半,所以一般线阵的测向范围为-60-60.

3 阵列的协方差矩阵:
1、M>K,即阵元个数M要大于该阵列系统可能接受到的同频空间信号的个数。
2、对于不同的信号的来向θ,信号的方向矢量a(θ)是线性独立的。
3、阵列中噪声为随机过程,具有高斯分布特性。
4、空间源信号矢量S(t)的协方差矩阵Rs是对角非奇异阵,这表明空间源信号是不相干的,同时还要求空间源信号与阵元输出不相干。

二、源代码

clear all;
close all;
clc
%****************************************************%
M=2;                                %阵元数目
theta0=30;                          %声源到达方向
p=1;                                 %声源个数
lamda=1.6;                        %波长
d=lamda/2;                       %阵元间距
a=[0:1:M-1];
a_theta0=exp(j*pi*2*d/lamda*sin(theta0*pi/180)*a);%第一阵列流型矢量
%****************************************************%
[s,fs]=wavread('C9_3_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);
%****************************************************%
s1=s1*a_theta0(1);                  %叠加角度信息
s2=s2*a_theta0(2);
%****************************************************%
%添加白噪声
%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(abs(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(abs(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(abs(s2_10db),'k'),title('麦克风2(SNR=10dB)'),xlabel('采样点'),ylabel('幅度');
subplot(5,2,7),plot(s1_0db,'k'),title('麦克风1(SNR=0dB)'),xlabel('采样点'),ylabel('幅度');

三、运行结果

在这里插入图片描述

四、备注

版本:2014a
完整代码或代写加1564658423

标签:麦克风,s2,s1,db,源码,SNR,matlab,549,阵列
来源: https://www.cnblogs.com/homeofmatlab/p/14941712.html