Моделирование возмущений и отказов элемента в сенсорной матрице

В этом примере показано, как смоделировать амплитуду, фазу, положение и возмущения шаблона, а также отказы элемента в сенсорной матрице.

Амплитудное возмущение

Этот раздел показывает, как добавить усиление или амплитудные возмущения на универсальной линейной матрице (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, используемую в предыдущем разделе. Полагайте, что распределение возмущений похоже на предыдущий раздел.

Выпустите Системный объект и установите заострения. Заострения имеют величину 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 шаблонов в массиве ячеек 'элемент' к этим 10 датчикам с помощью свойства ElementIndices.

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)

Сводные данные

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