phased.GSCBeamformer

Обобщенный формирователь луча компенсатора бокового лепестка

Описание

phased.GSCBeamformer Система object™ реализует формирователь луча обобщенной отмены бокового лепестка (GSC). Формирователь луча GSC разделяет входящие сигналы в два канала. Один канал проходит обычный путь к формирователю луча и вторые движения в путь к отмене бокового лепестка. Алгоритм сначала предварительно регулирует массив к beamforming направлению и затем адаптивно выбирает веса фильтра, чтобы минимизировать степень при выходе пути к отмене бокового лепестка. Алгоритм использует наименьшее количество средних квадратичных (LMS), чтобы вычислить адаптивные веса. Финал beamformed сигнал является различием между выходными параметрами этих двух путей.

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

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

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

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

Создание

Описание

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

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

Пример: beamformer = phased.GSCBeamformer('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

Длина КИХ пути прохождения сигнала фильтрует в виде положительного целого числа. Это свойство определяет адаптивный размер фильтра для пути к отмене бокового лепестка. КИХ-фильтр для обычного beamforming пути является функцией дельты той же длины.

Пример 4

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

Адаптивный фактор размера шага фильтра в виде положительного скаляра с действительным знаком. Это количество, когда разделено на общую степень в пути к отмене бокового лепестка, устанавливает фактический адаптивный размер шага фильтра, который используется в LMS-алгоритме.

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

Источник 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

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

Описание

пример

Y = beamformer(X) выполняет GSC beamforming на входе, X, и возвращает beamformed выходной параметр, Y.

пример

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

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

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

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

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

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

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

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

Зависимости

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

Создайте формирователь луча GSC для акустического массива с 11 элементами в воздухе. Сигнал щебета является инцидентом на массиве в -50 в азимуте и 0 в вертикальном изменении. Сравните GSC beamformed сигнал к Морозу beamformed сигнал. Скорость распространения сигнала составляет 340 м/с, и частота дискретизации составляет 8 кГц.

Создайте Системные объекты массивов и микрофон. Интервал элемента массива является половиной длины волны. Установите частоту сигнала на половину частоты Найквиста.

c = 340.0;
fs = 8.0e3;
fc = fs/2;
lam = c/fc;
transducer = phased.OmnidirectionalMicrophoneElement('FrequencyRange',[20 20000]);
array = phased.ULA('Element',transducer,'NumElements',11,'ElementSpacing',lam/2);

Симулируйте сигнал щебета с пропускной способностью на 500 Гц.

t = 0:1/fs:.5;
signal = chirp(t,0,0.5,500);

Создайте инцидентную волну, прибывающую в массив. Добавьте гауссов шум в волну.

collector = phased.WidebandCollector('Sensor',array,'PropagationSpeed',c, ...
    'SampleRate',fs,'ModulatedInput',false,'NumSubbands',512);
incidentAngle = [-50;0];
signal = collector(signal.',incidentAngle);
noise = 0.5*randn(size(signal));
recsignal = signal + noise;

Выполните Мороз beamforming под фактическим инцидентным углом.

frostbeamformer = phased.FrostBeamformer('SensorArray',array,'PropagationSpeed', ...
    c,'SampleRate',fs,'Direction',incidentAngle,'FilterLength',15);
yfrost = frostbeamformer(recsignal);

Выполните GSC beamforming и постройте формирователь луча выход против формирователя луча Фроста выход. Также постройте сигнал nonbeamformed, прибывающий в средний элемент массива.

gscbeamformer = phased.GSCBeamformer('SensorArray',array, ...
    'PropagationSpeed',c,'SampleRate',fs,'Direction',incidentAngle, ...
    'FilterLength',15);
ygsc = gscbeamformer(recsignal);
plot(t*1000,recsignal(:,6),t*1000,yfrost,t,ygsc)
xlabel('Time (ms)')
ylabel('Amplitude')

Увеличьте масштаб небольшой части выхода.

idx = 1000:1300;
plot(t(idx)*1000,recsignal(idx,6),t(idx)*1000,yfrost(idx),t(idx)*1000,ygsc(idx))
xlabel('Time (ms)')
legend('Received signal','Frost beamformed signal','GSC beamformed signal')

Создайте формирователь луча GSC для акустического массива с 11 элементами в воздухе. Сигнал щебета является инцидентом на массиве в -50 в азимуте и 0 в вертикальном изменении. Вычислите сигнал beamformed в направлении инцидентной волны и в другом направлении. Сравните два beamformed выходных параметров. Скорость распространения сигнала составляет 340 м/с, и частота дискретизации составляет 8 кГц. Создайте Системные объекты массивов и микрофон. Интервал элемента массива является половиной длины волны. Установите частоту сигнала на половину частоты Найквиста.

c = 340.0;
fs = 8.0e3;
fc = fs/2;
lam = c/fc;
transducer = phased.OmnidirectionalMicrophoneElement('FrequencyRange',[20 20000]);
array = phased.ULA('Element',transducer,'NumElements',11,'ElementSpacing',lam/2);

Симулируйте сигнал щебета с пропускной способностью на 500 Гц.

t = 0:1/fs:0.5;
signal = chirp(t,0,0.5,500);

Создайте инцидент wavefield удар массива.

collector = phased.WidebandCollector('Sensor',array,'PropagationSpeed',c, ...
    'SampleRate',fs,'ModulatedInput',false,'NumSubbands',512);
incidentAngle = [-50;0];
signal = collector(signal.',incidentAngle);
noise = 0.1*randn(size(signal));
recsignal = signal + noise;

Выполните GSC beamforming и постройте формирователь луча выходные параметры. Также постройте сигнал nonbeamformed, прибывающий в средний элемент массива.

gscbeamformer = phased.GSCBeamformer('SensorArray',array, ...
    'PropagationSpeed',c,'SampleRate',fs,'DirectionSource','Input port', ...
    'FilterLength',5);
ygsci = gscbeamformer(recsignal,incidentAngle);
ygsco = gscbeamformer(recsignal,[20;30]);
plot(t*1000,recsignal(:,6),t*1000,ygsci,t*1000,ygsco)
xlabel('Time (ms)')
ylabel('Amplitude')
legend('Received signal at element','GSC beamformed signal (incident direction)', ...
    'GSC beamformed signal (other direction)','Location','southeast')

Увеличьте масштаб небольшой части выхода.

idx = 1000:1300;
plot(t(idx)*1000,recsignal(idx,6),t(idx)*1000,ygsci(idx),t(idx)*1000,ygsco(idx))
xlabel('Time (ms)')
legend('Received signal at element','GSC beamformed signal (incident direction)', ...
    'GSC beamformed signal (other direction)','Location','southeast')

Алгоритмы

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

Ссылки

[1] Гриффитс, L. J. и Чарльз В. Джим. "Альтернативный подход к линейно ограниченному адаптивному beamforming". Транзакции IEEE на Антеннах и Распространении, 30.1 (1982): 27-34.

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

[3] Джонсон, D.H., и Дэн Э. Обида, обработка сигналов массивов, Englewood Cliffs: Prentice Hall, 1993.

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

Введенный в R2017b