Универсальная линейная матрица

Поддержка универсальных линейных матриц

Универсальная линейная матрица (ULA) располагает идентичные элементы датчика вдоль линии на пробеле с универсальным интервалом. Можно спроектировать ULA с phased.ULA. Когда вы используете этот объект, необходимо задать эти аспекты массива:

  • Элементы датчика массива

  • Интервал между элементами массива

  • Число элементов в массиве

Положения элементов массива ULA

Создайте и просмотрите ULA разделение четырех изотропных антенных элементов на 0,5 метра

array = phased.ULA('NumElements',4,'ElementSpacing',0.5);
viewArray(array);

Можно возвратить координаты элементов датчика массивов в форме [x;y;z] при помощи getElementPosition метод. Смотрите Прямоугольные координаты для соглашений тулбокса.

sensorpos = getElementPosition(array);

sensorpos матрица 3 на 4 с каждым столбцом, представляющим положение элемента датчика. Обратите внимание на то, что ось Y является осью массивов. Положительная ось X является направлением взгляда массивов (0 разворотов степеней). Элементы симметричны с уважением к центру фазы массива.

Элементы массива ULA

Элементом по умолчанию для ULA является phased.IsotropicAntennaElement объект. Можно указать различный элемент с помощью Element свойство.

Ответы элемента массива

Получите ответы элементов массива ULA с 4 элементами на уровне 1 ГГц.

Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным step синтаксис. Например, замените myObject(x) с step(myObject,x).

Задайте изотопические антенны для элементов массива. Затем задайте ULA с 4 элементами. Получите ответ путем выполнения Системы object™.

antenna = phased.IsotropicAntennaElement(...
    'FrequencyRange',[3e8 1e9]);
array = phased.ULA('NumElements',4,'ElementSpacing',0.5,...
    'Element',antenna);
freq = 1e9;
azangles = -180:180;
response = array(freq,azangles);

response 4 361 матрица, где каждый столбец содержит ответы под каждым углом азимута. Строки матрицы соответствуют этим четырем элементам. Поскольку элементами ULA являются изотропные антенны, response матрица из единиц.

Задержка сигнала между элементами массива

Этот пример вычисляет задержку между элементами ULA с 4 элементами использование phased.ElementDelay Система object™. Примите, что инцидентная форма волны удовлетворяет условию далекого поля. Задержки вычисляются относительно центра фазы массива. По умолчанию, phased.ElementDelay принимает, что инцидентная форма волны является распространением электромагнитной волны со скоростью света.

Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным step синтаксис. Например, замените myObject(x) с step(myObject,x).

Создайте ULA с 4 элементами использование синтаксиса только для значения и вычислите задержку инцидента сигнала на массиве от азимута на-90 ° и вертикального изменения на 0 °. Задержитесь модули находятся в секундах.

array = phased.ULA(4);
delay = phased.ElementDelay('SensorArray',array);
tau = delay([-90;0])
tau = 4×1
10-8 ×

   -0.2502
   -0.0834
    0.0834
    0.2502

tau 4 1 вектор из задержек относительно центра фазы массива, который является источником системы локальной координаты (0; 0; 0). Смотрите Системы Глобальной и Локальной координаты для описания систем глобальной и локальной координаты. Отрицательные задержки указывают, что сигнал прибывает в элемент прежде, чем достигнуть центра фазы массива. Поскольку форма волны прибывает от угла азимута-90 °, сигнал прибывает в первые и вторые элементы ULA, прежде чем это достигнет центра фазы, приводящего к отрицательным задержкам этих элементов.

Если сигнал является инцидентом на массиве в развороте на 0 ° из источника далекого поля, сигнал освещает все элементы массива, одновременно заканчивающегося в нулевую задержку.

tau = delay([0;0])
tau = 4×1

     0
     0
     0
     0

Если инцидентный сигнал является акустическим распространением формы волны давления на скорости звука, можно вычислить задержки элемента путем установки PropagationSpeed свойство к 340 м/с. Это значение является типичной скоростью звука на уровне моря.

delay = phased.ElementDelay('SensorArray',array,...
    'PropagationSpeed',340);
tau = delay([90;0])
tau = 4×1

    0.0022
    0.0007
   -0.0007
   -0.0022

Регулирование вектора

Держащийся вектор представляет относительные сдвиги фазы для инцидентной формы волны далекого поля через элементы массива. Можно определить эти сдвиги фазы с phased.SteeringVector объект.

Для одной несущей частоты держащийся вектор для ULA, состоящего из элементов N:

(ej2πfτ1ej2πfτ2ej2πfτ3...ej2πfτN)

где τn обозначает задержку относительно центра фазы массивов в энном элементе массива.

Вычислите ULA держащийся вектор

Вычислите держащийся вектор для ULA с 4 элементами на рабочей частоте 1 ГГц. Примите, что форма волны является инцидентом на массиве от азимута на 45 ° и вертикального изменения на 10 °.

Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным step синтаксис. Например, замените myObject(x) с step(myObject,x).

fc = 1e9;
array = phased.ULA(4);
steervec = phased.SteeringVector('SensorArray',array);
sv = steervec(fc,[45;10])
sv = 4×1 complex

  -0.0495 + 0.9988i
  -0.8742 + 0.4856i
  -0.8742 - 0.4856i
  -0.0495 - 0.9988i

Можно также вычислить держащийся вектор со следующим эквивалентным кодом.

delay = phased.ElementDelay('SensorArray',array);
tau = delay([45;10]);
exp(-1i*2*pi*fc*tau)
ans = 4×1 complex

  -0.0495 + 0.9988i
  -0.8742 + 0.4856i
  -0.8742 - 0.4856i
  -0.0495 - 0.9988i

Ответ массивов

Чтобы получить ответ массивов, который является взвешенной комбинацией держащихся векторных элементов для каждого инцидентного угла, используют phased.ArrayResponse Система object™.

Ответ ULA массивов

Создайте четырехэлементный ULA с элементами, расположенными с интервалами на уровне 0,25 м. Получите ответ величины массивов (абсолютное значение ответа массивов с комплексным знаком) для углов азимута (-180:180) на уровне 1 ГГц. Затем постройте нормированный ответ величины в дБ.

Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным step синтаксис. Например, замените myObject(x) с step(myObject,x).

fc = 1e9;
array = phased.ULA('NumElements',4,'ElementSpacing',0.25);
azangles = -180:180;
response = phased.ArrayResponse('SensorArray',array);
resp = abs(response(fc,azangles));
plot(azangles,mag2db((resp/max(resp))))
grid on
title('Azimuth Cut at Zero Degrees Elevation')
xlabel('Azimuth Angle (degrees)')

Figure contains an axes object. The axes object with title Azimuth Cut at Zero Degrees Elevation contains an object of type line.

Визуализируйте ответ массивов с помощью pattern метод. Создайте 3-D график ответа на пробеле UV; другие опции графического вывода доступны.

pattern(array,fc,[-1:.01:1],[-1:.01:1],'CoordinateSystem','uv',...
    'PropagationSpeed',physconst('Lightspeed'))

Figure contains an axes object. The axes object with title 3D Directivity Pattern in u-v space contains an object of type surface.

Прием плоской волны через массив

Можно симулировать эффекты сдвигов фазы через массив с помощью collectPlaneWave метод любого Системного объекта массивов.

collectPlaneWave метод модулирует входные сигналы элементом держащегося вектора, соответствующего элементу массива. Утвержденный по-другому, collectPlaneWave счета на фазу переключают через элементы в массиве на основе угла прибытия. Однако collectPlaneWave не составляет ответ отдельных элементов в массиве.

Прием плоской волны через ULA

Симулируйте прием синусоиды на 100 Гц, модулируемой несущей частотой 1 ГГц в ULA с 4 элементами. Примите, что угол прибытия сигнала (-90; 0).

Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным step синтаксис. Например, замените myObject(x) с step(myObject,x).

array = phased.ULA(4);
t = unigrid(0,0.001,0.01,'[)');
x = cos(2*pi*100*t)';
y = collectPlaneWave(array,x,[-90;0],1e9,physconst('LightSpeed'));

Предыдущий код эквивалентен следующему.

steervec = phased.SteeringVector('SensorArray',array);
sv = steervec(1e9,[-90;0]);
y1 = x*sv.';

Похожие темы