step

Системный объект: фазированный. 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 ° и применяется ко всем сигналам. Углы возвышения для всех сигналов должна быть такой же, как требуется алгоритмом phase mode excitation. Можно задать аргумент ElAng как одинарная или двойная точность.

Примечание

Объект выполняет инициализацию при первом выполнении объекта. Эта инициализация блокирует нетронутые свойства и входные спецификации, такие как размерности, сложность и тип данных входных данных. Если вы изменяете свойство nontunable или спецификацию входа, системный объект выдает ошибку. Чтобы изменить нетронутые свойства или входы, необходимо сначала вызвать 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)));

Создайте фазированное. RootMUSICEstimator Системного объекта

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