exponenta event banner

шаг

Системный объект: поэтапный. RootMUSICEstimator
Пакет: поэтапный

Выполнение оценки DOA

Синтаксис

ANG = step(H,X)
ANG = step(H,X,ElAng)

Описание

Примечание

Начиная с R2016b, вместо использования step для выполнения операции, определенной системным object™, можно вызвать объект с аргументами, как если бы это была функция. Например, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

ANG = step(H,X) оценивает направление поступления (DOA) по сигналу X использование оценщика DOA H. X - матрица, столбцы которой соответствуют сигнальным каналам. ANG - вектор строки оцененных широкополосных углов (в градусах). Можно указать аргумент X как одинарная или двойная точность.

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

ANG = step(H,X,ElAng) указывает, кроме того, предполагаемые углы возвышения сигналов. Этот синтаксис применим только в том случае, если SensorArray свойство объекта определяет однородный циклический массив (UCA). ElAng является скаляром между -90 ° и 90 ° и применяется ко всем сигналам. Углы возвышения для всех сигналов должны быть одинаковыми, как это требуется алгоритмом возбуждения фазовой моды. Можно указать аргументElAng как одинарная или двойная точность.

Примечание

Объект выполняет инициализацию при первом выполнении объекта. Эта инициализация блокирует неперестраиваемые свойства и входные спецификации, такие как размеры, сложность и тип данных входных данных. При изменении неперестраиваемого свойства или входной спецификации системный объект выдает ошибку. Чтобы изменить неперестраиваемые свойства или входные данные, необходимо сначала вызвать release метод разблокирования объекта.

Примеры

развернуть все

Оценка DOA двух сигналов, принятых стандартной 10-элементной однородной линейной матрицей (ULA), имеющей расстояние между элементами 1 метр. Рабочая частота антенны 150 МГц. Фактическое направление первого сигнала составляет 10 градусов по азимуту и 20 градусов по возвышению. Направление второго сигнала составляет 45 градусов по азимуту и 60 градусов по возвышению.

fs = 8000;
t = (0:1/fs:1).';
x1 = cos(2*pi*t*300);
x2 = cos(2*pi*t*400);
sULA = phased.ULA('NumElements',10,...
    'ElementSpacing',1);
sULA.Element.FrequencyRange = [100e6 300e6];
fc = 150e6;
x = collectPlaneWave(sULA,[x1 x2],[10 20;45 60]',fc);
rng default;
noise = 0.1/sqrt(2)*(randn(size(x))+1i*randn(size(x)));
sDOA = phased.RootMUSICEstimator('SensorArray',sULA,...
    'OperatingFrequency',fc,...
    'NumSignalsSource','Property',...
    'NumSignals',2);
doas = step(sDOA,x + noise);
az = broadside2az(sort(doas),[20 60])
az = 1×2

   10.0001   45.0107

Используя алгоритм root-MUSIC, оцените азимутальный угол прихода двух сигналов, принятых 15-элементным УЦА, имеющим радиус 1,5 метра. Рабочая частота антенны 150 МГц. Фактическое направление поступления первого сигнала - 10 градусов по азимуту и 4 градуса по отметке. Направление прихода второго сигнала - 45 градусов по азимуту и -2 градуса по отметке. При оценке направлений прибытия предположим, что сигналы поступают с высоты 0 градусов.

Установите частоты сигналов 500 и 600 Гц. Установите частоту дискретизации 8 кГц и рабочую частоту 150 МГц. Затем создайте сигналы основной полосы частот, матрицу UCA и сигналы плоских волн.

fs = 8000;
fc = 150e6;
t = (0:1/fs:1).';
x1 = cos(2*pi*t*500);
x2 = cos(2*pi*t*600);
sUCA = phased.UCA('NumElements',15,...
    'Radius',1.5);
x = collectPlaneWave(sUCA,[x1 x2],[10 4; 45 -2]',fc);

Добавление случайного комплексного гауссова белого шума к сигналам.

rs = RandStream('mt19937ar','Seed',0);
noise = 0.1/sqrt(2)*(randn(rs,size(x))+1i*randn(rs,size(x)));

Создание поэтапного. Объект системы стимуляции RootMUSIVEstimator

sDOA = phased.RootMUSICEstimator('SensorArray',sUCA,...
    'OperatingFrequency',fc,...
    'NumSignalsSource','Property',...
    'NumSignals',2);

Вычислите азимутальные углы для нулевой отметки.

elang = 0;
doas = step(sDOA, x + noise, elang);
az = sort(doas)
az = 1×2

    9.9815   44.9986