Однородная линейная матрица (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 собственность.
Получите отклики элементов 4-элементного массива ULA на частоте 1 ГГц.
Примечание.Этот пример выполняется только в R2016b или более поздних версиях. При использовании более ранней версии замените каждый вызов функции эквивалентным step синтаксис. Например, заменить myObject(x) с step(myObject,x).
Укажите изотопные антенны для элементов массива. Затем укажите 4-элементный ULA. Получите ответ, выполнив системное 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 является матрицей единиц.
В этом примере вычисляется задержка между элементами 4-элементного ULA с помощью phased.ElementDelay object™ системы. Предположим, что форма падающего сигнала удовлетворяет состоянию дальнего поля. Задержки вычисляются относительно фазового центра матрицы. По умолчанию phased.ElementDelay предполагает, что падающий сигнал представляет собой электромагнитную волну, распространяющуюся со скоростью света.
Примечание.Этот пример выполняется только в R2016b или более поздних версиях. При использовании более ранней версии замените каждый вызов функции эквивалентным step синтаксис. Например, заменить myObject(x) с step(myObject,x).
Создайте 4-элементную ULA с использованием синтаксиса «только значение» и вычислите задержку для сигнала, падающего на массив, от -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 элементов, равен:
− j2πfτN)
где startn обозначает временную задержку относительно фазового центра матрицы в n-м элементе матрицы.
Вычислите вектор управления для 4-элементного ULA при рабочей частоте 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 метода любого объекта System массива.
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.';