主要内容

使用广义交叉相关的源本地化

该示例显示如何使用广义互相关(GCC)和三角测量来确定宽带信号源的位置。为简单起见,该示例仅限于由一个源和两个接收传感器阵列组成的二维场景。您可以将这种方法扩展到两个以上的传感器或传感器阵列以及三维。

介绍

源定位与到达方向(DOA)估计不同。DOA估计旨在仅确定来自传感器的源的方向。源定位确定其位置。在该示例中,源本地化由两个步骤组成,其中第一步是DOA估计。

  1. 使用DOA估计算法估计来自每个传感器阵列的源的方向。对于宽带信号,无法应用许多众所周知的到达方向,例如Capon的方法或音乐,因为它们采用元件之间的相位差,使它们仅适用于窄带信号。在宽带案例中,而不是相位信息,您可以在元素中使用信号到达时间的差异。要计算到达时间差异,此示例使用与相变的广义交叉相关(GCC-PHAT)算法。从抵达时间的差异,您可以计算DOA。(对于窄带DOA估计算法的另一个例子,见高分辨率抵达方向估计)。

  2. 通过三角测量计算源位置。首先,沿着到达方向绘制从阵列的直线。然后,计算这两条线的交叉点。这是源位置。源定位需要了解接收传感器或传感器阵列的位置和方向。

三角测量公式

三角测量算法基于简单的三角形公式。假设传感器阵列位于2-D坐标(0,0)(l,0)并且未知的源位置是(x,y)。从传感器阵列的知识和阵列的两个到达方向, θ. 1 θ. 2 ,你可以计算(x,y)坐标

L. = y 晒黑 θ. 1 + y 晒黑 θ. 2

你可以解决哪些y

y = L. / 晒黑 θ. 1 + 晒黑 θ. 2

然后是X

X = y 晒黑 θ. 1

此示例的其余部分显示了如何使用相控阵系统Toolbox™的功能和系统对象来计算源位置。

源和传感器几何

设置两个接收4元素ULAs沿着X- 全局坐标系的轴,分开50米。第一阵列的相位中心是(0,0,0)。第二阵列的相位中心是(50,0)。来源位于(30,100)米。如图所示,接收阵列获得点+ Y.方向。源传输- 我方向。

指定传感器阵列之间的基线。

l = 50;

创建一个4元素接收器ULA的全向麦克风。你可以使用它淘汰系统对象™淘汰.WideBandCollector.阶段.gccestimator.两个数组的系统对象。

n = 4;rxula = phased.ula('元素',序列。聚糖透视术,......'numElements',n);

指定第一传感器阵列的位置和方向。创建ULA时,数组元素会自动沿着y-轴。您必须将阵列的本地轴旋转90°以沿着X- 全局坐标系的轴。

rxpos1 = [0; 0; 0];rxvel1 = [0; 0; 0];rxax1 = azelaxes(90,0);

指定第二个传感器阵列的位置和方向。选择第二个阵列的本地轴,以与第一阵列的本地轴对齐。

rxpos2 = [l; 0; 0];rxvel2 = [0; 0; 0];rxax2 = rxax1;

将信号源指定为单个全向换能器。

srcpos = [30; 100; 0];srcvel = [0; 0; 0];srcax = azelaxes(-90,0);srcula = phased.omnidirectionalmicrophoneElement;

定义波形

选择源信号为宽带LFM波形。假设系统的工作频率为300 kHz,并将信号的带宽设置为100 kHz。假设最大工作范围为150米。然后,您可以设置脉冲重复间隔(PRI)和脉冲重复频率(PRF)。假设10%的占空比并设定脉冲宽度。最后,在1500米/秒的水下频道中使用声音速度。

设置LFM波形参数并创建相位阶段.Linearfmwaveform.System Object™。

FC = 300e3;%300 kHz.C = 1500;%1500 m / sdmax = 150;%150米pri =(2 * dmax)/ c;prf = 1 / pri;bw = 100.0e3;%100 kHz.fs = 2 * bw;waveform = phased.linearfmwaveform('采样率',fs,'SweepBandwidth',bw,......'prf',prf,'pulsewidth',pri / 10);

然后可以生成发射信号

信号=波形();

辐射,传播和收集信号

宽带系统的辐射和传播建模比建模窄带系统更复杂。例如,衰减取决于频率。由于信号输入方向引起的元件之间的多普勒变换以及相移也根据频率而变化。因此,在处理宽带信号时模拟这些行为至关重要。此示例使用子带方法。

将子带的数量设置为128。

nfft = 128;

指定源辐射器和传感器阵列收集器。

散热器=相位阶段.WideBandradiator('传感器',srcula,......'繁殖',C,'采样率',fs,......'载频',fc,'numsubbands',nfft);collector1 = phased.widebandcollector('传感器',rxula,......'繁殖',C,'采样率',fs,......'载频',fc,'numsubbands',nfft);collector2 =相位界面.WideBandcollector('传感器',rxula,......'繁殖',C,'采样率',fs,......'载频',fc,'numsubbands',nfft);

从源从源到两个传感器阵列创建宽带信号传播器。

channel1 = phased.widebandfreespace('繁殖',C,......'采样率',fs,'工作频率',fc,'numsubbands',nfft);channel2 = phased.widebandfreespace('繁殖',C,......'采样率',fs,'工作频率',fc,'numsubbands',nfft);

将传播方向从源确定为传感器阵列。传播方向相对于源的局部坐标系。

[〜,Ang1t] = rangeangle(rxpos1,srcpos,srcax);[〜,Ang2t] = rangeangle(rxpos2,srcpos,srcax);

沿传感器阵列的方向辐射来自源的信号。

Sigt =散热器(信号,[Ang1t Ang2t]);

然后,将信号传播到传感器阵列。

sigp1 = channel1(sigt(:,1),srcpos,rxpos1,srcvel,rxvel1);sigp2 = channel2(sigt(:,2),srcpos,rxpos2,srcvel,rxvel2);

计算传感器阵列的传播信号的到达方向。因为收集器响应是传感器阵列局部坐标系中到达方向的函数,所以将局部坐标轴矩阵传递给rangeangle.功能。

[〜,Ang1r] = rangeangle(srcpos,rxpos1,rxax1);[〜,ang2r] = rangeangle(srcpos,rxpos2,rxax2);

收集接收传感器阵列的信号。

SIGR1 = Collector1(SIGP1,ANG1R);SIGR2 = Collector2(SIGP2,ANG2R);

GCC估计和三角测量

创建GCC-Phat估计。

doa1 =阶段.gccestimator('sensorarray',rxula,'采样率',fs,......'繁殖',C);doa2 =相位阶段.gccestimator('sensorarray',rxula,'采样率',fs,......'繁殖',C);

估计到达的指示。

Angest1 = DOA1(SIGR1);Angest2 = DOA2(SIGR2);

三角形源位置使用先前建立的公式。因为方案被限制在一起X-Y.平面,将z坐标设置为零。

yest = l /(abs(atand(attest1))+ abs(tand(Angest2)));XEST = Yest * ABS(TAND(Angest1));zest = 0;srcpos_est = [xest;最新; zest]
srcpos_est =3×129.9881 100.5743 0

估计的源位置与30cm内的真实位置匹配。

概括

此示例显示了如何使用三角测量执行源本地化。特别地,该示例显示了如何模拟,传播和处理宽带信号。GCC-PHAT算法用于估计宽带信号的到达方向。