Универсальная линейная матрица (ULA) располагает идентичные элементы датчика вдоль линии на пробеле с универсальным интервалом. Можно спроектировать ULA с phased.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 является 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:
где τn обозначает задержку относительно центра фазы массивов в энном элементе массива.
Вычислите держащийся вектор для 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 с элементами, расположенными с интервалами на уровне 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
не составляет ответ отдельных элементов в массиве.
Симулируйте прием синусоиды на 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.';