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

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

Универсальная линейная матрица (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)')

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

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

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

Можно моделировать эффекты сдвигов фазы через массив с помощью метода 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.';

Похожие темы