В этом примере показано, как определить положение источника широкополосного сигнала с помощью обобщенной взаимной корреляции (GCC) и триангуляции. Для простоты этот пример ограничивается двумерным сценарием, состоящим из одного источника и двух матриц приемных датчиков. Этот подход можно расширить более чем на два датчика или матрицы датчиков и на три размера.
Локализация источника отличается от оценки направления поступления (DOA). Оценка DOA стремится определить только направление источника от датчика. Локализация источника определяет его положение. В этом примере локализация источника состоит из двух шагов, первым из которых является оценка DOA.
Оцените направление источника из каждой матрицы датчиков с помощью алгоритма оценки DOA. Для широкополосных сигналов многие хорошо известные алгоритмы оценки направления прихода, такие как метод Капона или MUSIC, не могут быть применены, поскольку они используют разность фаз между элементами, делая их подходящими только для узкополосных сигналов. В широкополосном случае вместо информации о фазе можно использовать разность времени прихода сигнала между элементами. Для вычисления разностей времени прихода в этом примере используется обобщенная взаимная корреляция с алгоритмом фазового преобразования (GCC-PHAT). На основе различий во времени прибытия можно вычислить DOA. (Другой пример узкополосных алгоритмов оценки DOA см. в разделе Оценка направления поступления с высоким разрешением).
Вычислите исходное положение триангуляцией. Сначала проведите прямые линии от массивов вдоль направлений прибытия. Затем вычислите пересечение этих двух линий. Это расположение источника. Локализация источника требует знания положения и ориентации приемных датчиков или матриц датчиков.
Алгоритм триангуляции основан на простых тригонометрических формулах. Предположим, что матрицы датчиков расположены в координатах 2-D (0,0) и (L,0), а неизвестное местоположение источника - (x, y). От знания положений множеств датчика и этих двух направлений прибытия во множествах, θ1 и θ2, Вы можете вычислить (x, y) координаты от
которую вы можете решить для y
танец 2)
и затем для x
ytanstart1
В оставшейся части этого примера показано, как можно использовать функции и системные объекты Toolbox™ системы фазированных массивов для вычисления положения источника.
Установите две приемные 4-элементные ULA, выровненные вдоль оси X глобальной системы координат и отстоящие друг от друга на 50 метров. Фазовый центр первой матрицы равен (0,0,0). Фазовый центр второй матрицы равен (50,0,0). Исток находится на (30 100) метрах. Как показано на чертеже, принимающая матрица получает точку в направлении + y. Источник передает в направлении -y.

Укажите базовую линию между массивами датчиков.
L = 50;
Создайте 4-элементный приемник ULA всерёдных микрофонов. Вы можете использовать то же самое phased.ULA Системные object™ для phased.WidebandCollector и phased.GCCEstimator Системные объекты для обоих массивов.
N = 4; rxULA = phased.ULA('Element',phased.OmnidirectionalMicrophoneElement,... 'NumElements',N);
Укажите положение и ориентацию первого массива датчиков. При создании ULA элементы массива автоматически располагаются вдоль оси Y. Для выравнивания элементов вдоль оси X глобальной системы координат необходимо повернуть локальные оси массива на 90 °.
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 м. Затем можно задать интервал повторения импульсов (PRI) и частоту повторения импульсов (PRF). Предположим, что рабочий цикл составляет 10%, и установите длительность импульса. Наконец, использовать скорость звука в подводном канале 1500 м/с.
Установите параметры формы сигнала LFM и создайте phased.LinearFMWaveform object™ системы.
fc = 300e3; % 300 kHz c = 1500; % 1500 m/s dmax = 150; % 150 m pri = (2*dmax)/c; prf = 1/pri; bw = 100.0e3; % 100 kHz fs = 2*bw; waveform = phased.LinearFMWaveform('SampleRate',fs,'SweepBandwidth',bw,... 'PRF',prf,'PulseWidth',pri/10);
Затем сигнал передачи может генерироваться как
signal = waveform();
Моделирование излучения и распространения для широкополосных систем является более сложным, чем моделирование узкополосных систем. Например, затухание зависит от частоты. Доплеровский сдвиг, а также фазовые сдвиги между элементами вследствие направления поступающего сигнала также изменяются в соответствии с частотой. Таким образом, крайне важно моделировать такое поведение при работе с широкополосными сигналами. В этом примере используется поддиапазонный подход.
Установите число поддиапазонов равным 128.
nfft = 128;
Укажите излучатель источника и коллекторы матрицы датчиков.
radiator = phased.WidebandRadiator('Sensor',srcULA,... 'PropagationSpeed',c,'SampleRate',fs,... 'CarrierFrequency',fc,'NumSubbands',nfft); collector1 = phased.WidebandCollector('Sensor',rxULA,... 'PropagationSpeed',c,'SampleRate',fs,... 'CarrierFrequency',fc,'NumSubbands',nfft); collector2 = phased.WidebandCollector('Sensor',rxULA,... 'PropagationSpeed',c,'SampleRate',fs,... 'CarrierFrequency',fc,'NumSubbands',nfft);
Создайте широкополосные распространители сигналов для трактов от источника до двух матриц датчиков.
channel1 = phased.WidebandFreeSpace('PropagationSpeed',c,... 'SampleRate',fs,'OperatingFrequency',fc,'NumSubbands',nfft); channel2 = phased.WidebandFreeSpace('PropagationSpeed',c,... 'SampleRate',fs,'OperatingFrequency',fc,'NumSubbands',nfft);
Определите направления распространения от источника к массивам датчиков. Направления распространения соответствуют локальной системе координат источника.
[~,ang1t] = rangeangle(rxpos1,srcpos,srcax); [~,ang2t] = rangeangle(rxpos2,srcpos,srcax);
Излучайте сигнал от источника в направлениях матриц датчиков.
sigt = radiator(signal,[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-PHAT.
doa1 = phased.GCCEstimator('SensorArray',rxULA,'SampleRate',fs,... 'PropagationSpeed',c); doa2 = phased.GCCEstimator('SensorArray',rxULA,'SampleRate',fs,... 'PropagationSpeed',c);
Оцените направления прибытия.
angest1 = doa1(sigr1); angest2 = doa2(sigr2);
Триангулируйте исходную позицию с помощью формул, установленных ранее. Поскольку сценарий ограничен плоскостью x-y, установите координату z равной нулю.
yest = L/(abs(tand(angest1)) + abs(tand(angest2))); xest = yest*abs(tand(angest1)); zest = 0; srcpos_est = [xest;yest;zest]
srcpos_est = 3×1
29.9881
100.5743
0
Предполагаемое местоположение источника соответствует истинному местоположению в пределах 30 см.
В этом примере показано, как выполнить локализацию источника с помощью триангуляции. В частности, в примере показано, как моделировать, распространять и обрабатывать широкополосные сигналы. Алгоритм GCC-PHAT используется для оценки направления поступления широкополосного сигнала.