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