exponenta event banner

поэтапный. LCMVBeamformer

Узкополосный формирователь луча LCMV

Описание

Поэтапный. Объект LCMVBeamformer реализует узкополосный линейно-ограничительный минимально дисперсионный (LCMV) формирователь луча для матрицы датчиков. Формирователь луча LCMV относится к семейству формирователей луча оптимизации с ограничениями.

Для формирования сигналов, поступающих в матрицу датчиков:

  1. Создать phased.LCMVBeamformer и задайте его свойства.

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

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

Создание

Описание

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

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

Пример: beamformer = phased.LCMVBeamformer('Constraint',[1;1]) задает матрицу ограничений.

Свойства

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

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Матрица ограничений, заданная как комплексная матрица N-by-K. Каждый столбец матрицы представляет ограничение. N - количество элементов в матрице датчиков, а K - число ограничений. K должен быть меньше или равен N, K ≤ N.

Пример: [1 1i;1 1i]

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

Требуемый отклик формирователя луча LCMV, заданного как вектор K-by-1 с комплексным значением, где K - число ограничений в свойстве Constraint. Каждый элемент в векторе определяет требуемый отклик ограничения, указанного в соответствующем столбце Constraint собственность. Значение единицы создает ответ без искажения, а нулевое значение - нулевой ответ.

Пример: [1;0]

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

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

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

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

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

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

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

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

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

Описание

пример

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

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

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

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

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

Данные элемента массива, заданные как матрица anM-by-N, где N - количество элементов в массиве датчиков.

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

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

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

Обучающие данные, указанные в виде матрицы P-by-N. N - количество элементов матрицы датчиков. P - длина обучающих данных и должна быть больше N.

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

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

Зависимости

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

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

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

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

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

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

Весовые коэффициенты Beamformer, возвращаемые как вектор N-by-1 с комплексными значениями. N - количество элементов в матрице датчиков.

Зависимости

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

Примените формирователь луча LCMV к 5-элементному ULA изотропных сенсорных элементов, сохранив сигнал с нужного направления. Рабочая частота - 300 МГц.

Имитировать низкочастотный синусоидальный сигнал в гауссовом шуме.

f = 50;
t = (0:.001:.3)';
x = sin(2*pi*f*t);
c = physconst('LightSpeed');
fc = 300e6;
lambda = c/fc;
incidentAngle = [45;0];
antenna = phased.IsotropicAntennaElement('FrequencyRange',[20 20e8]);
array = phased.ULA('NumElements',5,'ElementSpacing',lambda/2,...
    'Element',antenna);
x = collectPlaneWave(array,x,incidentAngle,fc,c);
noise = 0.2*(randn(size(x)) + 1j*randn(size(x)));
rx = x + noise;

Сформируйте массив.

steervec = phased.SteeringVector('SensorArray',array,...
    'PropagationSpeed',c);
beamformer = phased.LCMVBeamformer('Constraint',steervec(fc,incidentAngle),'DesiredResponse',1);
y = beamformer(rx);

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

plot(t,real(rx(:,3)),'r:',t,real(y),t,real(x(:,3)),'g')
xlabel('Time (sec)')
ylabel('Amplitude')
legend('Signal at Sensor 3','Beamformed Signal','Noise Free Signal')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Signal at Sensor 3, Beamformed Signal, Noise Free Signal.

В этом примере показано, как использовать формирователь луча LCMV для указания нуля отклика массива в направлении источника помех. Массив представляет собой 10-элементный однородный линейный массив (ULA). По умолчанию элементы ULA являются изотропными антеннами, созданными phased.IsotropicAntennaElement object™ системы. Установите диапазон частот антенных элементов таким образом, чтобы несущая частота находилась в пределах рабочего диапазона. Несущая частота - 1 ГГц.

fc = 1e9;
lambda = physconst('LightSpeed')/fc;
array = phased.ULA('NumElements',10,'ElementSpacing',lambda/2);
array.Element.FrequencyRange = [8e8 1.2e9];

Моделирование тестового сигнала с использованием простого прямоугольного импульса.

t = linspace(0,0.3,300)';
testsig = zeros(size(t));
testsig(201:205) = 1;

Предположим, что прямоугольный импульс падает на ULA с угла 30 ° азимута и отметки 0 °. Используйте collectPlaneWave функция объекта ULA System по моделированию приема импульсного сигнала от угла падения.

angle_of_arrival = [30;0];
x = collectPlaneWave(array,testsig,angle_of_arrival,fc);

Сигнал x является матрицей с десятью столбцами. Каждый столбец представляет принятый сигнал в одном из элементов матрицы.

Сконструировать обычный фазовращающий формирователь луча. Установите WeightsOutputPort свойство для true для вывода весов пространственного фильтра.

convbeamformer = phased.PhaseShiftBeamformer('SensorArray',array,...
    'OperatingFrequency',1e9,'Direction',angle_of_arrival,...
    'WeightsOutputPort',true);

Добавление в сигнал сложного белого гауссова шума x. Задайте поток случайных чисел по умолчанию для воспроизводимых результатов.

rng default
npower = 0.5;
x = x + sqrt(npower/2)*(randn(size(x)) + 1i*randn(size(x)));

Создайте 10W источник пересечений. Указать постановщик помех на эффективную мощность излучения 10 Вт. Помеховый сигнал от постановщика помех падает на ULA с угла 120 ° по азимуту и отметке 0 °. Используйте collectPlaneWave функция объекта ULA System для имитации приема сигнала помехи.

jamsig = sqrt(10)*randn(300,1);
jammer_angle = [120;0];
jamsig = collectPlaneWave(array,jamsig,jammer_angle,fc);

Добавьте сложный белый гауссов шум, чтобы имитировать шумовые вклады, не связанные непосредственно с помеховым сигналом. Снова установите поток случайных чисел по умолчанию для воспроизводимых результатов. Мощность шума на 0 дБ ниже мощности помехи. Формирование луча с использованием обычного формирователя луча.

noisePwr = 1e-5;
rng(2008);
noise = sqrt(noisePwr/2)*...
    (randn(size(jamsig)) + 1j*randn(size(jamsig)));
jamsig = jamsig + noise;
rxsig = x + jamsig;
[yout,w] = convbeamformer(rxsig);

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

steeringvector = phased.SteeringVector('SensorArray',array,...
    'PropagationSpeed',physconst('LightSpeed'));
LCMVbeamformer = phased.LCMVBeamformer('DesiredResponse',1,...
    'TrainingInputPort',true,'WeightsOutputPort',true);
LCMVbeamformer.Constraint = steeringvector(fc,angle_of_arrival);
LCMVbeamformer.DesiredResponse = 1;
[yLCMV,wLCMV] = LCMVbeamformer(rxsig,jamsig);

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

subplot(211)
plot(t,abs(yout))
axis tight
title('Conventional Beamformer')
ylabel('Magnitude')
subplot(212)
plot(t,abs(yLCMV))
axis tight
title('LCMV (Adaptive) Beamformer')
xlabel('Seconds')
ylabel('Magnitude')

Figure contains 2 axes. Axes 1 with title Conventional Beamformer contains an object of type line. Axes 2 with title LCMV (Adaptive) Beamformer contains an object of type line.

Адаптивный формирователь луча значительно улучшает SNR прямоугольного импульса через 0,2 с.

Используя обычные и LCMV веса, постройте график ответов для каждого формирователя луча.

subplot(211)
pattern(array,fc,[-180:180],0,'PropagationSpeed',physconst('LightSpeed'),...
    'CoordinateSystem','rectangular','Type','powerdb','Normalize',true,...
    'Weights',w)
title('Array Response with Conventional Beamforming Weights');
subplot(212)
pattern(array,fc,[-180:180],0,'PropagationSpeed',physconst('LightSpeed'),...)
    'CoordinateSystem','rectangular','Type','powerdb','Normalize',true,...
    'Weights',wLCMV)
title('Array Response with LCMV Beamforming Weights');

Figure contains 2 axes. Axes 1 with title Array Response with Conventional Beamforming Weights contains an object of type line. This object represents 1 GHz. Axes 2 with title Array Response with LCMV Beamforming Weights contains an object of type line. This object represents 1 GHz.

Адаптивная форма луча помещает нуль на угол прихода интерференционного сигнала, 120 °.

Алгоритмы

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

Ссылки

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

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

.
Представлен в R2011a