exponenta event banner

Однородный линейный массив

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

Однородная линейная матрица (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 собственность.

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

Получите отклики элементов 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 элементов, равен:

(e j2.dfü 1e j2.dfü 2e j2.dfü 3... e − j2πfτN)

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

Вычислить вектор управления ULA

Вычислите вектор управления для 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

Постройте четырехэлементную 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. The axes 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. The axes with title 3D Directivity Pattern in u-v space contains an object of type surface.

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

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

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.';

Связанные темы