step

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

Оцените направление прибытия с помощью 2D MUSIC

Синтаксис

spectrum = step(estimator,X)
[spectrum,doa] = step(estimator,X)

Описание

Примечание

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

spectrum = step(estimator,X) возвращает 2D спектр MUSIC сигнала, заданного в X.

[spectrum,doa] = step(estimator,X) также возвращает направления сигнала углов падения, doa. Чтобы использовать этот синтаксис, установите DOAOutputPort свойство к true.

Примечание

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

Входные параметры

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

2D средство оценки MUSIC, заданное как phased.MUSICEstimator2D Системный объект.

Полученный сигнал, заданный как M-by-N матрица с комплексным знаком. Количество M является количеством демонстрационных значений (снимки состояния), содержавшиеся в сигнале и N, является количеством элементов датчика в массиве.

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

Пример: [[0;1;2;3;4;3;2;1;0],[1;2;3;4;3;2;1;0;0]]

Типы данных: single | double
Поддержка комплексного числа: Да

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

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

2D MUSIC пространственный спектр, возвращенный как неотрицательный, K с действительным знаком - вектор-столбец длины, представляющий величину предполагаемого MUSIC пространственный спектр. Каждая запись соответствует углу, заданному AzimuthScanAngles и ElevationScanAngles свойства.

Направления прибытия сигналов, возвращенных как 2 с действительным знаком L матрицей. Направление угла падения задано азимутом и углами вертикального изменения источника относительно системы локальной координаты массивов. Первая строка матрицы содержит углы азимута, и вторая строка содержит углы вертикального изменения. Угловые модули в градусах. L является количеством сигналов, заданных NumSignals свойство или выведенное использование метода заданы NumSignalsMethod свойство.

Зависимости

Чтобы включить этот выходной аргумент, установите DOAOutputPort свойство к true.

Примеры

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

Примите, что две синусоидальных волны частот 450 Гц и 600 Гц ударяют URA от двух различных направлений. Сигналы прибывают от азимута на-37 °, вертикального изменения на 0 ° и азимута на 17 °, вертикального изменения на 20 °. Используйте 2D MUSIC, чтобы оценить направления прибытия двух сигналов. Массив рабочая частота составляет 150 МГц и частота дискретизации сигнала, составляет 8 кГц.

f1 = 450.0;
f2 = 600.0;
doa1 = [-37;0];
doa2 = [17;20];
fc = 150e6;
c = physconst('LightSpeed');
lam = c/fc;
fs = 8000;

Создайте URA с изотропными элементами по умолчанию. Установите область значений частотной характеристики элементов.

array = phased.URA('Size',[11 11],'ElementSpacing',[lam/2 lam/2]);
array.Element.FrequencyRange = [50.0e6 500.0e6];

Создайте два сигнала и добавьте случайный шум.

t = (0:1/fs:1).';
x1 = cos(2*pi*t*f1);
x2 = cos(2*pi*t*f2);
x = collectPlaneWave(array,[x1 x2],[doa1,doa2],fc);
noise = 0.1*(randn(size(x))+1i*randn(size(x)));

Создайте и выполните 2D средство оценки MUSIC, чтобы найти направления прибытия.

estimator = phased.MUSICEstimator2D('SensorArray',array,...
    'OperatingFrequency',fc,...
    'NumSignalsSource','Property',...
    'DOAOutputPort',true,'NumSignals',2,...
    'AzimuthScanAngles',-50:.5:50,...
    'ElevationScanAngles',-30:.5:30);
[~,doas] = estimator(x + noise)
doas = 2×2

   -37    17
     0    20

Предполагаемые DOAs точно совпадают с истинным DOAs.

Постройте 2D пространственный спектр

plotSpectrum(estimator);

Примите, что две синусоидальных волны частот 1,6 кГц и 1,8 кГц ударяют дисковый массив от двух различных направлений. Интервал между элементами диска является 1/2 длиной волны. Сигналы прибывают от азимута на-31 °, вертикального изменения на-11 ° и азимута на 35 °, вертикального изменения на 55 °. Используйте 2D MUSIC, чтобы оценить направления прибытия двух сигналов. Массив рабочая частота составляет 300 МГц и частота дискретизации сигнала, составляет 8 кГц.

Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным step синтаксис. Например, замените myObject(x) с step(myObject,x).

f1 = 1.6e3;
f2 = 1.8e3;
doa1 = [-31;-11];
doa2 = [35;55];
fc = 300e6;
c = physconst('LightSpeed');
lam = c/fc;
fs = 8.0e3;

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

uraarray = phased.URA('Size',[21 21],'ElementSpacing',[lam/2 lam/2]);
pos = getElementPosition(uraarray);

Извлеките подмножество их, чтобы сформировать нанесенный диск.

radius = 10.5*lam/2;
pos(:,sum(pos.^2) > radius^2) = [];

Затем создайте конформный массив с помощью этих положений.

confarray = phased.ConformalArray('ElementPosition',pos);
viewArray(confarray)

Установите область значений частотной характеристики элементов.

confarray.Element.FrequencyRange = [50.0e6 600.0e6];

Создайте два сигнала и добавьте случайный шум.

t = (0:1/fs:1.5).';
x1 = cos(2*pi*t*f1);
x2 = cos(2*pi*t*f2);
x = collectPlaneWave(confarray,[x1 x2],[doa1,doa2],fc);
noise = 0.1*(randn(size(x)) + 1i*randn(size(x)));

Создайте и выполните 2D средство оценки MUSIC, чтобы найти направления прибытия.

estimator = phased.MUSICEstimator2D('SensorArray',confarray,...
    'OperatingFrequency',fc,...
    'NumSignalsSource','Property',...
    'DOAOutputPort',true,'NumSignals',2,...
    'AzimuthScanAngles',-60:.1:60,...
    'ElevationScanAngles',-60:.1:60);
[~,doas] = estimator(x + noise)
doas = 2×2

    35   -31
    55   -11

Предполагаемые DOAs точно совпадают с истинным DOAs.

Постройте 2D пространственный спектр

plotSpectrum(estimator);

Введенный в R2017b