поэтапный. FrostBeamformer

Заморозьте формирователь луча

Описание

Объект phased.FrostBeamformer реализует формирователь луча Фроста. Формирователь луча Мороза состоит из временного интервала формирователь луча MVDR, объединенный с банком КИХ-фильтров. Формирователь луча регулирует луч к данному направлению, в то время как КИХ-фильтры сохраняют степень входного сигнала.

Вычислить сигнал beamformed:

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

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

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

Создание

Синтаксис

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

Описание

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

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

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

Свойства

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

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

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

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

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

Пример: phased.URA

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

Пример: 3e8

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

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

Пример: 1e6

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

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

Пример 7

Типы данных: 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

Включите вывод 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) выполняет Фроста 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 матрица. 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]

Зависимости

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

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

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

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

Зависимости

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

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

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

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

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

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

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

Зависимости

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

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

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

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

release(obj)

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

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

Примеры

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

Примените Мороз beamforming к акустическому массиву ULA с 11 элементами. Инцидентный угол входящего сигнала является-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;

Beamform сигнал.

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

Постройте beamformed вывод.

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

Найдите, что веса формирователя луча Мороза beamforming применились к сигналам, полученным в акустическом массиве ULA с 7 элементами. Инцидентный угол входящего сигнала -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. Затем beamform прибывающий сигнал и получает веса формирователя луча.

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 весов, вычисленных как ожидалось.

Сравните beamformed вывод с сигналом, прибывающим в средний элемент массива.

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

Алгоритмы

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

  1. Регулирует массив к beamforming направлению.

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

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

Для получения дополнительной информации о Морозе beamforming, см. [1].

Ссылки

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

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

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

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