源定位采用广义互相关

此示例示出了如何确定使用广义交叉相关(GCC)和三角测量的宽带信号的源的位置。为简单起见,这个例子被限制在由一个源和两个接收传感器阵列的二维场景。可以将此方法扩展到多于两个的传感器或传感器阵列和三维。

介绍

源定位不同于方向的到达(DOA)估计。DOA估计寻求确定只有来自传感器的源的方向。源定位确定其位置。在这个例子中,源定位由两个步骤组成,其中第一个是DOA估计。

  1. 估计来自使用DOA估计算法各传感器阵列的源的方向。对于宽带信号,到达估计算法,诸如的Capon法或MUSIC许多知名的方向,因为它们采用元素之间的相位差,不能被应用,使得它们只适合于窄带信号。在宽带的情况下,而不是相位信息,您可以使用在信号的时间的到达元素之间的差异。为了计算时间的到达的差异,这个示例使用与相变广义互相关(GCC-PHAT)算法。从时间的到达的不同,你可以计算DOA。(有关的窄带DOA估计算法另一个实例中,参见到达估计的高分辨方位)。

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

三角公式

三角测量算法是基于简单的三角公式。假设传感器阵列位于所述2-d的坐标(0,0)(L,0)和未知源位置(X,Y)。从在阵列中的传感器阵列位置和两个方向上的到达的知识, θ 1 θ 2 ,你可以计算(X,Y)从坐标

大号 = ÿ 黄褐色 θ 1 + ÿ 黄褐色 θ 2

它可以解决ÿ

ÿ = 大号 / 黄褐色 θ 1 + 黄褐色 θ 2

,然后X

X = ÿ 黄褐色 θ 1

在这个例子显示剩余怎么可以使用的功能和相控阵系统工具箱™来计算源位置的系统对象。

源和传感器几何

沿着对齐的设置了两个接收4-元件Ulas公寓X全球坐标系的 - 轴和相隔50米。第一阵列的相位中心是(0,0,0)。第二阵列的相位中心是(50,0,0)。源位于(30100)米。如该图所示,接收阵列增益指向在+ Y方向。在源发送-y方向。

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

L = 50;

创建全向麦克风的4元件接收机ULA。您可以使用相同的phased.ULA系统对象™为phased.WidebandCollectorphased.GCCEstimator系统对象的两个数组。

N = 4;rxULA = phased.ULA('元件',phased.OmnidirectionalMicrophoneElement,...'包含numElements',N);

指定第一传感器阵列的位置和定向。当创建ULA,阵列元素自动沿着间隔ÿ-轴。你必须通过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千赫和信号的带宽为100千赫兹。假定为150μm的最大操作范围。然后,可以设置脉冲重复间隔(PRI)和脉冲重复频率(PRF)。假定10%的占空比和脉冲宽度设置。最后,使用声音的速度在1500米的水下信道/秒。

设置LFM波形参数和创建phased.LinearFMWaveform系统对象™。

FC = 300e3;%300千赫C = 1500;%1500米/秒DMAX = 150;%150米PRI =(2 * DMAX)/ C;PRF = 1 / PRI;BW = 100.0e3;%100千赫FS = 2 * BW;波形= phased.LinearFMWaveform('采样率',FS,'SweepBandwidth',体重,...'PRF',PRF,“脉冲宽度”,PRI / 10);

所述发射信号可接着作为生成

信号=波形();

辐射,传播和收集信号

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

设定子带的数目为128。

NFFT = 128;

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

散热器= phased.WidebandRadiator('传感器',srcULA,...'PropagationSpeed',C,'采样率',FS,...'载频',FC,'NumSubbands',NFFT);collector1 = phased.WidebandCollector('传感器',rxULA,...'PropagationSpeed',C,'采样率',FS,...'载频',FC,'NumSubbands',NFFT);collector2 = phased.WidebandCollector('传感器',rxULA,...'PropagationSpeed',C,'采样率',FS,...'载频',FC,'NumSubbands',NFFT);

创建用于从源到两个传感器阵列的路径中的宽带信号传播者。

通道1 = phased.WidebandFreeSpace('PropagationSpeed',C,...'采样率',FS,'工作频率',FC,'NumSubbands',NFFT);通道2 = phased.WidebandFreeSpace('PropagationSpeed',C,...'采样率',FS,'工作频率',FC,'NumSubbands',NFFT);

确定从源到传感器阵列的传播方向。传播方向是相对于该源的本地坐标系。

[〜,ang1t] = rangeangle(rxpos1,srcpos,srcax);[〜,ang2t] = rangeangle(rxpos2,srcpos,srcax);

辐射从在传感器阵列的方向上的源的信号。

SIGT =散热器(信号,[ang1t ang2t]);

然后,传播信号提供给传感器阵列。

sigp1 =通道1(SIGT(:,1),srcpos,rxpos1,srcvel,rxvel1);sigp2 =通道2(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 = phased.GCCEstimator('SensorArray',rxULA,'采样率',FS,...'PropagationSpeed',C);DOA2 = phased.GCCEstimator('SensorArray',rxULA,'采样率',FS,...'PropagationSpeed',C);

估计到达的方向。

angest1 = DOA1(sigr1);angest2 = DOA2(sigr2);

三角源位置使用以前建立的公式。由于该方案仅限于X-Y平面,设置Z坐标为零。

yest = L /(ABS(t和(angest1))+ ABS(t和(angest2)));xest = yest * ABS(t和(angest1));热情= 0;srcpos_est = [xest; yest;热情]
srcpos_est =3×129.9881 100.5743 0

所估计的源位置的真实位置相匹配至30cm范围内。

摘要

这个例子说明如何利用三角测量来进行源定位。特别地,实施例表明如何模拟,传播和处理宽带信号。该GCC-PHAT算法被用于估计的宽带信号的到达方向。