Документация Engee

EngeePhased.PhaseShiftBeamformer

Страница в процессе разработки.

Формирователь узкополосного луча на основе фазового сдвига.

Описание

Системный объект EngeePhased.PhaseShiftBeamformer моделирует формирователь узкополосного луча на основе фазового сдвига. Задержка аппроксимируется с помощью фазового сдвига во временной области. Фазосдвигающий формирователь луча относится к семейству обычных формирователей луча.

Чтобы создать и использовать формирователь узкополосного луча на основе фазового сдвига, выполните следующие действия:

  1. Создайте объект EngeePhased.PhaseShiftBeamformer и установите его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Чтобы узнать подробнее о том, как работать с системными объектами, см. Системные объекты Engee.

Синтаксис

Создание

  • beamformer = EngeePhased.PhaseShiftBeamformer() — создает формирователь луча на основе фазового сдвига со значениями свойств по умолчанию.

  • beamformer = EngeePhased.PhaseShiftBeamformer(Name=Value) — создает формирователь луча на основе фазового сдвига с заданными свойствами в виде пары Name=Value, где Name — имя свойства, а Value — соответствующее значение. Можно указать несколько пар «имя-значение», порядок пар не имеет значения. Неуказанные свойства сохраняют свои значения по умолчанию.

Использование

  • Y = beamformer(X) — формирует узкополосный луч Y на основе фазового сдвига X. Чтобы использовать этот синтаксис, установите для свойства DirectionSource значение "Property" и задайте направление формирования луча с помощью свойства Direction.

  • Y = beamformer(X,ANG) — использует входной аргумент ANG для установки направления формирования луча. Чтобы использовать этот синтаксис, установите для свойства DirectionSource значение "Input port".

  • Y,W = beamformer(___) — возвращает весовые коэффициенты формирования луча W. Чтобы использовать этот синтаксис, установите для свойства WeightsOutputPort значение true.

Аргументы

Входные аргументы

X — входной сигнал
комплексная матрица M на N

Details

Входной сигнал, заданный в виде комплексной матрицы на .

Если элемент антенной решетки содержит антенные подрешетки, — это количество антенных подрешеток; в противном случае — это количество элементов антенной решетки.

Размер первой размерности входной матрицы может меняться для имитации изменения длины сигнала. Изменение размера может происходить, например, в случае импульсной формы сигнала с переменной частотой повторения импульсов.

Типы данных

Float64, Float64

Поддержка комплексных чисел

Да

ANG — направления формирования выходного сигнала
вещественный вектор-столбец 2 на 1 | вещественная матрица 2 на L

Details

Направления излучения сигналов, заданные как вещественный вектор-столбец на или матрица на , где — это количество направлений формирования луча. Каждый столбец имеет вид [AzimuthAngle;ElevationAngle].

Единицы измерения — градусы.

Азимутальный угол должен лежать между −180° и 180°, включительно. Угол места должен лежать в диапазоне от −90° до 90°, включительно.

Зависимости

Чтобы использовать этот аргумент, установите для свойства DirectionSource значение "Input port".

Типы данных

Float32, Float64

Выходные аргументы

Y — выходной сигнал, сформированный по лучу
комплексная матрица M на L

Details

Суперпозиция входных сигналов, возвращаемых в виде комплексной матрицы на , где — количество строк аргумента X, а — количество направлений формирования луча.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Да

W — весовые коэффициенты формирования луча
комплексная матрица N на L

Details

Комплексно сопряженные весовые коэффициенты формирования луча, возвращаемые в виде комплексной матрицы на , где — количество элементов антенной решетки, — количество направлений формирования луча.

Зависимости

Чтобы использовать этот аргумент, установите дял свойства DirectionSource значение true.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Да

Свойства

# DirectionSource — источник направления формирования луча
Строка

Details

Источник направления формирования луча, заданный как "Property" (по умолчанию) или "Input port":

  • "Property" — укажите направление формирования луча с помощью свойства Direction

  • Input port — укажите направление формирования луча с помощью входного аргумента ANG

# WeightsNormalization — подход к нормализации весовых коэффициентов формирователя луча
Строка

Details

Подход к нормализации весовых коэффициентов формирователя луча.

  • Если для этого свойства установлено значение "Distortionless" (по умолчанию), коэффициент усиления в направлении формирования луча равен 0 дБ.

  • Если для этого свойства задано значение "Preserve power", норма весовых коэффициентов равна единице.

# PropagationSpeed — скорость распространения сигнала
Вещественное число

Details

Скорость распространения сигнала, заданная как положительный скаляр. По умолчанию используется значение скорости света 299792458.

Единицы измерения — м/с.

# OperatingFrequency — рабочая частота
Вещественное число

Details

Рабочая частота, заданная как положительный скаляр.

Значение по умолчанию — 3e8.

Единицы измерения — Гц.

# WeightsOutputPort — включение вывода весовых коэффициентов формирования луча
Логический тип

Details

Включение вывода весовых коэффициентов формирования луча, задается как false (по умолчанию) или true. Для получения весовых коэффициентов формирования луча установите для этого свойства значение true и используйте соответствующий выходной аргумент, W.

Если вы не хотите получать весовые коэффициенты, установите для этого свойства значение false.

# NumPhaseShifterBits — разрядность квантования фазовращателя
Вещественное число

Details

Количество бит, используемых для квантования компонента фазового сдвига весовых коэффициентов вектора формирования луча или вектора управления, задается как целое неотрицательное число. Значение по умолчанию 0 означает, что квантование не выполняется.

# SensorArray — объект антенной решетки

Details

Объект антенной решетки, антенны из подрешеток или элемента антенной решетки. Антенная решетка может содержать подрешетки.

# Direction — направления формирования луча
Скаляр / массив вещественных чисел

Details

Направления формирования луча, заданные как вещественный вектор на или вещественная матрица на . В матрице каждый столбец задает отдельное направление формирования луча. Каждый столбец имеет вид [AzimuthAngle;ElevationAngle].

Азимутальный угол должен лежать между −180° и 180°, включительно. Угол места должен лежать в диапазоне от −90° до 90°, включительно.

Значение по умолчанию — [0; 0;;].

Единицы измерения — градусы.

Зависимости

Чтобы использовать это свойство, установите для свойства DirectionSource значение "Property".

Методы

Общие для всех системных объектов

step!

Запустить алгоритм работы системного объекта

release!

Разрешить изменение значения свойства системного объекта

reset!

Сброс внутренних состояний системного объекта

Примеры

Фазовый формирователь луча с использованием ULA, направление формирования луча с помощью свойства

Details

Применим фазосдвиговое формирование луча к синусоидальному сигналу, принимаемому линейной антенной решеткой из 7 элементов. Направление формирования луча — азимут 45° и угол места 0°. Предположим, что решетка работает на частоте 300 МГц. Укажем направление формирования луча с помощью свойства.

Смоделируем синусоидальный сигнал, поступающий на решетку.

using EngeePhased
using Random


t = collect(0:1000)
fsignal = 0.01
y = sin.(2π * fsignal .* t)

c = 299_792_458.0
fc = 300e6
incidentAngle = [45.0, 0.0]

array = EngeePhased.ULA(NumElements=7)
collector = EngeePhased.Collector(Sensor=array,OperatingFrequency=fc,PropagationSpeed=c)

x = collector(y, incidentAngle)

noise = 0.1 .* (randn(size(x)) .+ 1im .* randn(size(x)))
rx = x .+ noise

Создадим фазосдвигающий формирователь луча, а затем сформируем луч для входных данных.

beamformer = EngeePhased.PhaseShiftBeamformer(SensorArray=array,
    OperatingFrequency=fc,PropagationSpeed=c,
    Direction=incidentAngle,WeightsOutputPort=true)

Получим сформированный сигнал и весовые коэффициенты формирователя луча.

y,w = beamformer(rx)

Построим график исходного сигнала в центральном элементе и сигнала, сформированного в результате формирования луча.

plot(t, real.(rx[:, 4]),
     seriestype = :line, ls = :dot, color = :red,
     label = "Original",
     xlabel = "Time", ylabel = "Amplitude")

plot!(t, real.(y),
      seriestype = :line, color = :blue,
      label = "Beamformed")

so phase shift beamformer

Построим диаграмму направленности антенной решетки после применения весовых коэффициентов.

pattern(array,fc,[-180:180],0,PropagationSpeed=c,CoordinateSystem="polar",Weights=w)

so phase shift beamformer 1

Фазовый формирователь луча с использованием ULA, направление формирования луча с помощью входного аргумента

Details

Применим фазосдвиговое формирование луча к сигналу, принимаемому линейной антенной решеткой из 5 элементов. Направление формирования луча — азимут 45° и угол места 0°. Предположим, что решетка работает на частоте 300 МГц. Укажем направление формирования луча с помощью входного аргумента.

Смоделируем синусоидальный сигнал, поступающий на решетку.

using EngeePhased
using LinearAlgebra
using Random

function collectPlaneWave(array, x, incidentAngle, fc, c)
    N = array.NumElements
    az = deg2rad(incidentAngle[1])
    el = deg2rad(incidentAngle[2])
    d = c / fc / 2
    u = cos(el) * cos(az)
    n = -(N-1)/2 : (N-1)/2
    a = exp.(+1im * 2π * (fc / c) * d .* n .* u)
    return vec(x) * transpose(a)
end


t = collect(0:1000)
fsignal = 0.01
x = sin.(2π * fsignal .* t)

c = 299_792_458.0
fc = 300e6
incidentAngle = [45.0, 0.0]

array = EngeePhased.ULA(NumElements=5)

x = collectPlaneWave(array, x, incidentAngle, fc, c)

noise = 0.1 .* (randn(size(x)) .+ 1im .* randn(size(x)))
rx = x .+ noise

Создадим фазосдвигающий формирователь луча, а затем сформируем луч для входных данных.

beamformer = EngeePhased.PhaseShiftBeamformer(SensorArray=array,
    OperatingFrequency=fc,PropagationSpeed=c,
    DirectionSource="Input port",WeightsOutputPort=true)

Получим сформированный сигнал и весовые коэффициенты формирователя луча.

y,w = beamformer(rx,incidentAngle)

Построим график исходного сигнала в центральном элементе и сигнала, сформированного в результате формирования луча.

plot(t, real.(rx[:, 3]),
     seriestype = :line, ls = :dot, color = :red,
     label = "Original",
     xlabel = "Time", ylabel = "Amplitude")

plot!(t, real.(y),
      seriestype = :line, color = :blue,
      label = "Beamformed")

so phase shift beamformer 2

Построим диаграмму направленности антенной решетки после применения весовых коэффициентов.

pattern(array,fc,[-180:180],0,PropagationSpeed=c,CoordinateSystem="rectangular",Weights=w)

so phase shift beamformer 3

Дополнительно

Формирование луча с фазовым сдвигом

Details

В формирователе луча с фазовым сдвигом используется обычный алгоритм формирования луча с задержкой и суммой. При формировании луча предполагается, что сигнал является узкополосным, поэтому фазовый сдвиг может приблизить требуемую задержку. При этом формирователь луча сохраняет мощность входящего сигнала.

Более подробная информация приведена в [1].

Точность данных

Details

Системный объект EngeePhased.PhaseShiftBeamformer поддерживает одинарную и двойную точность для входных данных, свойств и аргументов.

  • Если входные данные аргумента X имеют одинарную точность, то выходные данные имеют одинарную точность.

  • Если входные данные аргумента X имеют двойную точность, то выходные данные имеют двойную точность. Точность выходных данных не зависит от точности свойств и других аргументов.

Литература

  1. Van Trees, H.L. Optimum Array Processing. New York, NY: Wiley-Interscience, 2002.

  2. Johnson, Don H. and D. Dudgeon. Array Signal Processing. Englewood Cliffs, NJ: Prentice Hall, 1993.

  3. Van Veen, B.D. and K. M. Buckley. Beamforming: A versatile approach to spatial filtering. IEEE ASSP Magazine, Vol. 5 No. 2 pp. 4–24.