поэтапный. MVDRBeamformer

Узкополосный формирователь луча минимального отклонения ответа без искажений

Описание

Поэтапное. Система MVDRBeamformer object™ реализует узкополосный формирователь луча ответа без искажений минимального отклонения (MVDR). Формирователь луча MVDR также называется формирователем луча Каплуна. Формирователь луча MVDR принадлежит семейству ограниченных формирователей луча оптимизации.

К сигналам beamform, прибывающим в массив:

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

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

beamformer = phased.MVDRBeamformer
beamformer = phased.MVDRBeamformer(Name,Value)

Описание

beamformer = phased.MVDRBeamformer создает Системный объект формирователя луча MVDR, beamformer, со значениями свойств по умолчанию.

beamformer = phased.MVDRBeamformer(Name,Value) создает формирователь луча MVDR с каждым набором свойства Name к заданному Value. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1, Value1..., NameN, ValueN). Заключите каждое имя свойства в одинарные кавычки.

Пример: beamformer = phased.MVDRBeamformer('SensorArray',phased.URA,'OperatingFrequency',300e6) устанавливает сенсорную матрицу на универсальный прямоугольный массив (URA) со значениями свойств URA по умолчанию. Формирователь луча имеет рабочую частоту 300 МГц.

Свойства

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

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

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

Сенсорная матрица, заданная как Системный объект массивов, принадлежащий Phased Array System Toolbox. Сенсорная матрица может содержать подмассивы.

Пример: phased.URA

Скорость распространения сигнала, заданная как положительная скалярная величина с действительным знаком. Модули исчисляются в метрах в секунду. Скорость распространения по умолчанию является значением, возвращенным physconst('LightSpeed').

Пример: 3e8

Типы данных: single | double

Рабочая частота, заданная как положительная скалярная величина. Модули находятся в Гц.

Пример: 1e9

Типы данных: single | double

Диагональный коэффициент загрузки, заданный как неотрицательный скаляр. Диагональная загрузка является методом, используемым, чтобы достигнуть устойчивой beamforming производительности, особенно когда объем выборки является маленьким. Размер небольшой выборки может привести к неточной оценке ковариационной матрицы. Диагональная загрузка также обеспечивает робастность из-за регулирования векторных ошибок. Диагональный метод загрузки добавляет кратное положительной скалярной величины единичная матрица в матрицу выборочной ковариации.

Настраиваемый: да

Типы данных: single | double

Включите вход данных тренировки, заданный как false или true. Когда вы установите это свойство на true, используйте входной параметр данных тренировки, XT, при выполнении объекта. Установите это свойство на false использовать входные данные, X, как данные тренировки.

Типы данных: логический

Источник beamforming направления, заданного как 'Property' или 'Input port'. Задайте, прибывает ли beamforming направление из свойства Direction этого объекта или от входного параметра, ANG. Значения этого свойства:

'Property'Задайте beamforming направление с помощью свойства Direction.
'Input port'Задайте beamforming направление с помощью входного параметра, ANG.

Типы данных: char

Направления Beamforming, заданные как с действительным знаком 2 1 вектор или 2 с действительным знаком L матрицей. Для матрицы каждый столбец задает различное beamforming направление. Каждый столбец имеет форму [AzimuthAngle;ElevationAngle]. Углы азимута должны находиться между-180 ° и 180 °, и углы повышения должны находиться между-90 ° и 90 °. Все углы заданы относительно системы локальной координаты массива. Модули в градусах.

Пример: [40;30]

Зависимости

Чтобы включить это свойство, установите свойство DirectionSource на 'Property'.

Типы данных: single | double

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

Пример 5

Типы данных: single | double

Включите вывод beamforming весов, заданных как false или true. Чтобы получить beamforming веса, установите это свойство на true и используйте соответствующий выходной аргумент, W. Если вы не хотите получать веса, установите это свойство на false.

Типы данных: логический

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

Для версий ранее, чем R2016b, используйте функцию step, чтобы запустить алгоритм Системного объекта. Аргументы к step являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

Y = beamformer(X)
Y = beamformer(X,XT)
Y = beamformer(X,ANG)
Y = beamformer(X,XT,ANG)
[Y,W] = beamformer(___)

Описание

пример

Y = beamformer(X) выполняет MVDR beamforming на входном сигнале, X, и возвращает beamformed выходной параметр в Y. Этот синтаксис использует X в качестве учебных выборок, чтобы вычислить beamforming веса.

Y = beamformer(X,XT) использование XT как учебные выборки, чтобы вычислить beamforming веса. Чтобы использовать этот синтаксис, установите свойство TrainingInputPort на true.

Y = beamformer(X,ANG) использование ANG как beamforming направление. Чтобы использовать этот синтаксис, установите свойство DirectionSource на 'Input port'.

Y = beamformer(X,XT,ANG) объединения все входные параметры. Чтобы использовать этот синтаксис, установите свойство TrainingInputPort на true и установите свойство DirectionSource на 'Input port'.

[Y,W] = beamformer(___) возвращает beamforming веса, W. Чтобы использовать этот синтаксис, установите свойство WeightsOutputPort на true.

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

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

Входной сигнал, заданный как M с комплексным знаком-by-N матрица. N является количеством элементов массива. Если сенсорная матрица содержит подмассивы, N является количеством подмассивов. Если вы устанавливаете TrainingInputPort на false, M должен быть больше, чем N; в противном случае M может быть любым положительным целым числом.

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

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

Данные тренировки, заданные как P с комплексным знаком-by-N матрица. Если сенсорная матрица содержит подмассивы, N является количеством подмассивов; в противном случае N является числом элементов. P должен быть больше, чем N.

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

Пример: [1 0.5 2.6; 2 -0.2 0; 3 -2 -1]

Зависимости

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

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

Направления Beamforming, заданные как с действительным знаком 2 1 вектор-столбец, или 2 L матрицей. L является количеством beamforming направлений. Каждый столбец имеет форму [AzimuthAngle;ElevationAngle]. Модули в градусах. Каждый угол азимута должен находиться между-180 ° и 180 °, и каждый угол повышения должен находиться между-90 ° и 90 °.

Пример: [40;10]

Зависимости

Чтобы включить этот аргумент, установите свойство DirectionSource на 'Input port'.

Типы данных: single | double

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

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

Beamformed выходной параметр, возвращенный как M с комплексным знаком-by-L матрица, где M является количеством строк X и L, является количеством beamforming направлений.

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

Веса Beamforming, возвращенные как N с комплексным знаком-by-L матрица. Если сенсорная матрица содержит подмассивы, N является количеством подмассивов; в противном случае N является числом элементов. L является количеством beamforming направлений.

Зависимости

Чтобы включить этот вывод, установите свойство WeightsOutputPort на true.

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

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

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

stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

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

Примените формирователь луча MVDR к ULA с 5 элементами. Инцидентный угол сигнала является 45 градусами в области азимута и 0 степенями в области повышения. Частота сигнала составляет.01 герц. Несущая частота составляет 300 МГц.

t = [0:.1:200]';
fr = .01;
xm = sin(2*pi*fr*t);
c = physconst('LightSpeed');
fc = 300e6;
rng('default');
incidentAngle = [45;0];
array = phased.ULA('NumElements',5,'ElementSpacing',0.5);
x = collectPlaneWave(array,xm,incidentAngle,fc,c);
noise = 0.1*(randn(size(x)) + 1j*randn(size(x)));
rx = x + noise;

Вычислите beamforming веса

beamformer = phased.MVDRBeamformer('SensorArray',array,...
    'PropagationSpeed',c,'OperatingFrequency',fc,...
    'Direction',incidentAngle,'WeightsOutputPort',true);
[y,w] = beamformer(rx);

Постройте сигналы

plot(t,real(rx(:,3)),'r:',t,real(y))
xlabel('Time')
ylabel('Amplitude')
legend('Original','Beamformed')

Постройте шаблон ответа массивов с помощью весов MVDR

pattern(array,fc,[-180:180],0,'PropagationSpeed',c,...
    'Weights',w,'CoordinateSystem','rectangular',...
    'Type','powerdb');

Алгоритмы

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

Ссылки

[1] Деревья фургона, H. Оптимальная обработка матриц. Нью-Йорк: Wiley-межнаука, 2002.

[2] Застыньте, O. “Алгоритм Для Линейно Ограниченной Адаптивной Обработки матриц”, Продолжения IEEE. Издание 60, Номер 8, август 1972, стр 926–935.

Расширенные возможности

Представленный в R2012a