шаг

Системный объект: поэтапный. 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