Этот пример показывает, как использовать калибровку пилот-сигнала для улучшения эффективности антенной решетки при наличии неизвестных возмущений.
В принципе, можно легко спроектировать идеальную однородную линейную решётку (ULA), чтобы выполнить задачи обработки массива, такие как формирование луча или оценка направления прибытия. На практике нет такого понятия, как идеальный массив. Например, всегда будут иметь место некоторые неизбежные производственные допуски среди различных элементов массива. Поскольку в целом невозможно получить точные знания об этих изменениях, их часто называют неопределенностями или возмущениями. Обычно наблюдаемые неопределенности включают усиление элемента и фазы элемента неопределенности (электрические неопределенности), а также неопределенности местоположения элемента (геометрические неопределенности).
Наличие неопределенностей в системе массивов вызывает быстрое ухудшение в эффективность обнаружения, разрешения и оценки алгоритмов обработки массивов. Поэтому очень важно калибровать массив перед его развертыванием. В дополнение к вышеупомянутым факторам неопределенности могут также возникнуть из-за других факторов, таких как старение оборудования и эффекты на окружающую среду. Поэтому калибровка выполняется также на регулярном базисный во всех развернутых системах.
Существует много алгоритмов калибровки массивов. Этот пример фокусируется на подходе калибровки пилот-сигнала [1], где неопределенности оцениваются от отклика массива к одному или нескольким известным внешним источникам в известных местоположениях. Пример сравнивает эффект неопределенностей на эффективность массива до и после калибровки.
Рассмотрим идеальный ULA с 6 элементами вдоль оси Y, работающий с полуволновым интервалом и равномерным сужением. Для ULA можно вычислить ожидаемые положения элемента и конусы.
N = 6; designed_pos = [zeros(1,N);(0:N-1)*0.5;zeros(1,N)]; designed_taper = ones(N,1);
Затем моделируйте возмущения, которые могут существовать в вещественном массиве. Они обычно моделируются как случайные переменные. Для примера предположим, что величины и фаза конусности возмущены нормально распределенными случайными переменными со стандартными отклонениями 0,1 и 0,05 соответственно.
rng(2014); taper = (designed_taper + 0.1*randn(N,1)).*exp(1i*0.05*randn(N,1));
Следующий рисунок показывает различие между величиной и фазой возмущенной конусности и проектируемой конусности.
helperCompareArrayProperties('Taper',taper,designed_taper,... {'Perturbed Array','Designed Array'});
Возмущения в местах расположения датчика в направлениях x, y и z генерируются аналогично со стандартным отклонением 0,05.
pos = designed_pos + 0.05*randn(3,N);
Рисунок ниже показывает, где положения элемента возмущенного массива и идеального массива.
helperCompareArrayProperties('Position',pos,designed_pos,... {'Perturbed Array','Designed Array'});
В предыдущем разделе показано различие между спроектированным, идеальным массивом и вещественным, возмущенным массивом. Из-за этих ошибок, если один слепо применяет шаги обработки, такие как веса формирования луча, вычисленные с использованием разработанной матрицы, на возмущенном массиве, эффективность значительно ухудшается.
Рассмотрим случай формирования луча LCMV, предназначенного для направления идеального массива в направлении 10 степеней азимута с двумя помехами от двух известных направлений -10 степеней азимута и 60 степеней азимута. Цель состоит в том, чтобы сохранить интересующий сигнал при подавлении помех.
Если известно точное знание конусности и геометрии массива, веса формирования луча могут быть вычислены следующим образом:
% Generate 10K samples from target and interferences with 30dB SNR az = [-10 10 60]; Nsamp = 1e4; ncov = db2pow(-30); [~,~,rx_cov] = sensorsig(pos,Nsamp,az,ncov,'Taper',taper); % Compute LCMV beamforming weights assuming the designed array sv = steervec(pos,az); w = lcmvweights(bsxfun(@times,taper,sv),[0;1;0],rx_cov);
Однако, поскольку массив содержит неизвестные возмущения, веса формирования луча должны быть вычислены на основе положений и конусности проектируемой решётки.
designed_sv = steervec(designed_pos,az);
designed_w = lcmvweights(bsxfun(@times,designed_taper,designed_sv),...
[0;1;0],rx_cov);
Следующий рисунок сравнивает ожидаемую диаграмму направленности с шаблоном, полученным от применения расчетных весов к возмущенному массиву.
helperCompareBeamPattern(pos,taper,w,designed_w,-90:90,az,... {'Expected Pattern','Uncalibrated Pattern'},... 'Beam Pattern Before Calibration');
Из нанесенных на график шаблонов ясно, что шаблон, полученный из-за некалиброванных весов, не удовлетворяет требованиям. Это помещает нуль вокруг желаемого направления 10 степеней азимута. Это означает, что требуемый сигнал больше не может быть извлечен. К счастью, калибровка массива может помочь привести шаблон к порядку.
Существует много доступных алгоритмов для выполнения калибровки массива. Одним из классов обычно используемых алгоритмов является калибровка пилот-сигнала. Алгоритм устанавливает несколько источников в известных направлениях, а затем использует массив, чтобы принять сигнал от этих передатчиков. Поскольку эти передатчики находятся в известных направлениях, ожидаемый принятый сигнал идеального массива может быть вычислен. Сравнивая их с фактическим полученным сигналом, можно вывести различие из-за неопределенностей и исправить их.
Приведенный ниже код показывает процесс калибровки массива. Во-первых, источники пилот-сигнала должны быть выбраны в разных направлениях. Обратите внимание, что количество источников пилот-сигнала определяет, сколько неопределенностей может исправить алгоритм. В этом примере, чтобы исправить как неопределенности местоположения датчика, так и сужение неопределенности, требуется минимум четыре внешних источника. Если используется больше источников, оценка улучшится.
pilot_ang = [-60, -5 ,5, 40; -10, 0, 0, 30];
Четыре источника управления расположены в следующих парах азимута и угла возвышения: (-60, -10), (-5, 0), (5, 0) и (40, 30). Принятый сигнал от этих пилотов может быть симулирован как
for m = size(pilot_ang,2):-1:1 calib_sig(:,:,m) = sensorsig(pos,Nsamp,pilot_ang(:,m),... ncov,'Taper',taper); end
Используя принятый сигнал от пилотов в массиве, вместе с положениями элемента и сужениями проектируемой решётки, алгоритм калибровки [1] оценивает положения элемента и сужения для возмущенной решётки.
[est_pos,est_taper] = pilotcalib(designed_pos,...
calib_sig,pilot_ang,designed_taper);
Как только оцененные положения и конусность доступны, они могут использоваться вместо расчетных параметров массива при вычислении весов формирования луча. Это приводит к шаблону массива, представленному красной линией ниже.
corrected_w = lcmvweights(bsxfun(@times,est_taper,... steervec(est_pos,az)),[0;1;0],rx_cov); helperCompareBeamPattern(pos,taper,... w,corrected_w,-90:90,az,... {'Expected Pattern','Calibrated Pattern'},... 'Beam Pattern After Calibration');
Рисунок выше показывает, что шаблон, полученный из калиброванного массива, намного лучше, чем шаблон из некалиброванного массива. В частности, теперь сохраняются сигналы с нужного направления.
Этот пример показывает, как неопределенности массива могут повлиять на его диаграмму направленности и, в свою очередь, снизить эффективность массива. Пример также иллюстрирует, как калибровка пилот-сигнала может использоваться, чтобы помочь восстановить эффективность массива.
[1] N. Fistas and A. Manikas, «A New General Global Array Calibration Method», IEEE Proceedings of ICASSP, Vol. IV, pp. 73-76, April 1994.