В этом примере показано, как моделировать возмущения амплитуды, фазы, положения и структуры, а также отказы элементов в матрице датчиков.
В этом разделе показано, как добавить возмущения усиления или амплитуды на однородной линейной матрице (ULA) из 10 элементов. Рассмотрим возмущения как статистически независимые нулевые средние гауссовы случайные величины со стандартным отклонением 0,1.
Создайте антенну ULA из 10 элементов.
N = 10; ula = phased.ULA(N);
Создание возмущений амплитуды или усиления путем генерации нормально распределенных случайных чисел со средним значением 1.
rs = rng(7);
pertStDev = 0.1;
% Clone the ideal ULA
perturbedULA = clone(ula);
perturbedULA.Taper = 1+randn(1,N)*pertStDev;
Сравните отклик возмущенного на идеальный массив.
% Overlay responses c = 3e8; freq = c; subplot(2,1,1); helperCompareResponses(perturbedULA,ula,'Amplitude Perturbation', ... {'Perturbed','Ideal'}); % Show the corresponding tapers subplot(2,1,2); stem(perturbedULA.Taper) title('Amplitude Tapers');xlabel('Sensor');ylabel('Gain');

В этом разделе показано, как добавить фазовые возмущения к антенне ULA, использованной в предыдущем разделе. Учтите, что распределение возмущений аналогично предыдущему разделу.
Отпустите объект System и установите конусы. Конусы имеют величину 1 и случайные фазовые сдвиги со средним значением 0.
release(perturbedULA); perturbedULA.Taper = exp(1i*randn(1,N)*pertStDev);
Сравните отклик возмущенного на идеальный массив.
% Overlay responses subplot(2,1,1); helperCompareResponses(perturbedULA,ula,'Phase Perturbation', ... {'Perturbed','Ideal'}); % Show the corresponding tapers subplot(2,1,2); stem(angle(perturbedULA.Taper)) title('Phase Tapers');xlabel('Sensor');ylabel('Phase (rad)');

Обратите внимание, как возмущенный ответ имеет более мелкие нули.
В этом разделе показано, как изменить положение датчика ULA по трем осям.
% Get positions of ideal ULA ulaPos = getElementPosition(ula); % Add perturbations in all dimensions ulaPosPert = ulaPos + randn(size(ulaPos))*pertStDev;
Создайте возмущенный массив.
perturbedULA = phased.ConformalArray('ElementPosition',ulaPosPert,... 'ElementNormal',zeros(2,N));
Сравните отклик возмущенного на идеальный массив.
% Overlay responses clf; helperCompareResponses(perturbedULA,phased.ULA(N), ... 'Position Perturbation', {'Perturbed','Ideal'});

Просмотр массива.
viewArray(perturbedULA);
title('Element Positions');

В этом разделе изотропные антенные элементы заменяются возмущенными диаграммами направленности.
Сначала создайте 10 пользовательских антенных элементов с возмущенными изотропными диаграммами.
antenna = phased.CustomAntennaElement; radpat = antenna.MagnitudePattern; element = cell(1,N); for i = 1:N perturbedAntenna = clone(antenna); perturbedAntenna.MagnitudePattern = ... pow2db(1+randn(size(radpat))*pertStDev); element{i} = perturbedAntenna; end
Здесь сопоставьте 10 шаблонов в массиве ячеек «element» с 10 датчиками с помощью свойства ElityIndices.
perturbedULA = phased.HeterogeneousULA('ElementSet',element, ... 'ElementIndices',1:N);
Сравните отклик возмущенного на идеальный массив.
% Overlay responses clf; subplot(2,2,[1 2]); helperCompareResponses(perturbedULA,phased.ULA(N),... 'Pattern Perturbation', ... {'Perturbed','Ideal'}); % Show the perturbed pattern response next to the ideal isotropic pattern subplot(2,2,3); pattern(ula.Element,freq,'CoordinateSystem','polar','Type','power') title('Isotropic pattern'); subplot(2,2,4); pattern(element{1},freq,'CoordinateSystem','polar','Type','power') title('Perturbed pattern');

В этом разделе будут моделироваться отказы элементов равномерно прямоугольного массива 8 на 10. Каждый элемент имеет 10-процентную вероятность отказа.
Создайте антенну URA из 8 на 10 элементов.
ura = phased.URA([8 10]);
Отказы можно смоделировать, установив коэффициент усиления соответствующего датчика равным 0. Здесь создается матрица, в которой каждый элемент имеет 10-процентную вероятность быть 0.
ura.Taper = double(rand(8,10) > .1);
Сравните отклик массива с отказавшими элементами с идеальным массивом.
% Overlay responses clf; helperCompareResponses(ura,phased.ULA(N),'Element Failures', ... {'Failures','No Failures'});

Обратите внимание на то, насколько глубоких нулей трудно достичь в отклике массива с отказавшими элементами.
Просмотр сбойных элементов.
viewArray(ura,'ShowTaper',true); title('Failed Elements'); % reset the random seed rng(rs)

В этом примере показано, как моделировать различные виды возмущений, а также отказы элементов. Он также продемонстрировал влияние на отклик массива для всех случаев.