phased.FrostBeamformer

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

Описание

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

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

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

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

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

Создание

Описание

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 Используя Системные объекты.

Сенсорная матрица в виде Системного объекта 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.

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

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

Описание

пример

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')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent 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')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent 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.

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

Введенный в R2011a