phased.FrostBeamformer

Фрост-лучевой форматор

Описание

The phased.FrostBeamformer реализует Frost beamformer. Frost beamformer состоит из мотора MVDR во временной области, объединенного с банком конечных импульсных характеристик. Пучок направляет пучок в заданное направление, в то время как конечные импульсные характеристики фильтры сохраняют степень входного сигнала.

Чтобы вычислить сигнал формирования луча:

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

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

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

beamformer = phased.FrostBeamformer создает Frost beamformer System object™, beamformer, со значениями свойств по умолчанию.

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

Пример: beamformer = phased.FrostBeamformer('SensorArray',phased.ULA('NumElements',20),'SampleRate',300e3) устанавливает массив датчиков в равномерный линейный массив (ULA) с значениями свойств ULA по умолчанию, за исключением количества элементов. Лучевой форматор имеет частоту дискретизации 300 кГц.

Свойства

расширить все

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

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

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

Массив датчика, заданный как Phased Array System Toolbox Системного объекта массива. Массив не может содержать подрешетки.

Пример: phased.URA

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

Пример: 3e8

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

Частота дискретизации сигнала, заданная как положительная скалярная величина. Модули указаны в Гц. Системный объект использует это количество, чтобы вычислить задержку распространения в единицах измерения выборки.

Пример: 1e6

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

Длина конечной импульсной характеристики для каждого элемента датчика, заданная как положительное целое число.

Пример: 7

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

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

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

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

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

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

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

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

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

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

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

Зависимости

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

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

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

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

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

Описание

пример

Y = beamformer(X) выполняет Фрост-формирование луча на входе, X, и возвращает выход формирования луча, Y. Этот синтаксис использует входные данные, X, как обучающие выборки для вычисления весов формирования луча.

Y = beamformer(X,XT) использует XT в качестве обучающих данных для вычисления весов формирования луча. Чтобы использовать этот синтаксис, задайте значение свойства TrainingInport true.

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

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

пример

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

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

расширить все

Входной сигнал, заданный как комплексная матрица M -by N. M - длина сигнала, а N - количество элементов массива, заданное в свойстве SensorArray. M должен быть больше длины фильтра, заданной свойством FilterLength.

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

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

Обучающие данные, заданные как комплексная матрица M -by N. M и N равны значениям для X.

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

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

Зависимости

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

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

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

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

Зависимости

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

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

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

расширить все

Beamformed output, возвращенный как комплексный вектор 1- M, где M - количество строк входного сигнала X.

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

Веса Beamforming, возвращенные как вектор <reservedrangesplaceholder1>-by-1 со сложным знаком, где L количество степеней свободы формирователя луча. Количество степеней свободы определяется продуктом количества элементов, заданных свойством SensorArray, и конечной импульсной характеристикой длины фильтра, заданной свойством FilterLength.

Зависимости

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

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

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

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

release(obj)

расширить все

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

Примеры

свернуть все

Применить Фрост-формирование луча к 11-элементному акустическому массиву ULA. Падающий угол входящего сигнала составляет -50 степени по азимуту и 30 степени по повышению. Скорость звука в воздухе принята равной 340 м/с. Сигнал добавил гауссов белый шум.

Симулируйте сигнал.

array = phased.ULA('NumElements',11,'ElementSpacing',0.04);
array.Element.FrequencyRange = [20 20000];
fs = 8e3;
t = 0:1/fs:0.3;
x = chirp(t,0,1,500);
c = 340;
collector = phased.WidebandCollector('Sensor',array,...
    'PropagationSpeed',c,'SampleRate',fs,...
    'ModulatedInput',false,'NumSubbands',8192);
incidentAngle = [-50;30];
x = collector(x.',incidentAngle);
noise = 0.2*randn(size(x));
rx = x + noise;

Сформируйте сигнал лучом.

beamformer = phased.FrostBeamformer('SensorArray',array,...
    'PropagationSpeed',c,'SampleRate',fs,...
    'Direction',incidentAngle,'FilterLength',5);
y = beamformer(rx);

Постройте график выходного сигнала луча.

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

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original, Beamformed.

Найдите веса формирования луча Фроста, приложенные к сигналам, принятым в 7-элементном акустическом массиве ULA. Угол падения входного сигнала -20 в азимуте и 30 на повышении. Сигнал добавил гауссов белый шум. Скорость звука в воздухе принята равной 340 м/с. Используйте длину фильтра 15.

Сначала создайте сигнал.

numelements = 7;
element = phased.OmnidirectionalMicrophoneElement('FrequencyRange',[50,10000]);
array = phased.ULA('Element',element,'NumElements',numelements,'ElementSpacing',0.04);
fs = 8e3;
t = 0:1/fs:0.3;
x = chirp(t,0,1,500);
c = 340.0;
collector = phased.WidebandCollector('Sensor',array,...
    'PropagationSpeed',c,'SampleRate',fs,...
    'ModulatedInput',false,'NumSubbands',8192);
incidentAngle = [-20;30];
x = collector(x.',incidentAngle);
noise = 0.2*randn(size(x));
rx = x + noise;

Создайте формирователь луча с длиной фильтра 15. Затем формируйте пучок поступающего сигнала и получайте веса пучка.

filterlength = 15;
beamformer = phased.FrostBeamformer('SensorArray',array, ...
    'PropagationSpeed',c,'SampleRate',fs,'WeightsOutputPort',true, ...
    'Direction',incidentAngle,'FilterLength',filterlength);
[y,wt] = beamformer(rx);
size(wt)
ans = 1×2

   105     1

Существует 7 * 15 = 105 веса, вычисленные как ожидалось.

Сравните формированный лучом выход с сигналом, поступающим в средний элемент массива.

plot(1000*t,rx(:,4),'r:',1000*t,y)
xlabel('time (msec)')
ylabel('Amplitude')
legend('Middle Element','Beamformed')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Middle Element, Beamformed.

Алгоритмы

phased.FrostBeamformer использует алгоритм формирования луча, предложенный Фростом. Это может быть рассмотрено как аналог частотного диапазона луча с минимальным отклонением без искажений (MVDR). Алгоритм делает следующее:

  1. Управление массивом в направлении формирования луча.

  2. Применяет конечная импульсная характеристика к выходу каждого датчика, чтобы достичь ограничения без искажений. Фильтр характерен для каждого датчика.

  3. Этот системный объект поддерживает одинарную и двойную точность для входных данных, свойств и аргументов. Если входные данные X является одинарной точностью, выходные данные являются одинарной точностью. Если входные данные X двойная точность, выходные данные двойная точность. Точность выхода не зависит от точности свойств и других аргументов.

Для получения дополнительной информации о Фрост-формировании луча смотрите [1].

Ссылки

[1] Frost, O. «Алгоритм для линейно ограниченной обработки адаптивных массивов», труды IEEE. Том 60, № 8, август 1972, с. 926-935.

[2] Деревья фургонов, H. Optimum Array Processing. Нью-Йорк: Wiley-Interscience, 2002.

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

.
Введенный в R2011a
Для просмотра документации необходимо авторизоваться на сайте