phased.GSCBeamformer

Обобщенный боковой аннулятор луча

Описание

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

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

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

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

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

Создание

Описание

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

beamformer = phased.GSCBeamformer(Name,Value) создает объект GSC beamformer, 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

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

Пример: 4

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

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

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

Источник направления формирования луча, заданный как '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

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

Описание

пример

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

пример

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

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

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

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

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

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

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

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

Зависимости

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

Создайте генератор луча GSC для 11-элементного акустического массива на воздухе. Сигнал щебета падает на массив -50 в азимуте и 0 на повышении. Сравните сигнал формирования луча GSC с сигналом формирования луча Фроста. Скорость распространения сигнала составляет 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;

Выполнить Фрост-формирование луча под фактическим углом падения.

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

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

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

Figure contains an axes. The axes contains 3 objects of type line.

Увеличьте изображение небольшого фрагмента выхода.

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

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Received signal, Frost beamformed signal, GSC beamformed signal.

Создайте генератор луча GSC для 11-элементного акустического массива на воздухе. Сигнал щебета падает на массив -50 в азимуте и 0 на повышении. Вычислите сигнал формирования луча в направлении падающей волны и в другом направлении. Сравните два выходов в виде луча. Скорость распространения сигнала составляет 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);

Создайте падающее волновое поле, поражающее массив.

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 и постройте график выходов луча. Также постройте график нелучевого сигнала, поступающего в средний элемент массива.

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

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Received signal at element, GSC beamformed signal (incident direction), GSC beamformed signal (other direction).

Увеличьте изображение небольшого фрагмента выхода.

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

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Received signal at element, GSC beamformed signal (incident direction), GSC beamformed signal (other direction).

Алгоритмы

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

Ссылки

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

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

[3] Johnson, D.H., and Dan E. Dudgeon, Array Signal Processing, Englewood Cliffs: Prentice Hall, 1993.

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

.
Введенный в R2016b