phased.LCMVBeamformer

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

Описание

phased.LCMVBeamformer object реализует узкополосный формирователь луча минимального отклонения линейного ограничения (LCMV) для сенсорной матрицы. Формирователь луча LCMV принадлежит семейству ограниченных формирователей луча оптимизации.

К сигналам beamform, прибывающим в сенсорную матрицу:

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

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

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

Создание

Описание

beamformer = phased.LCMVBeamformer создает Систему формирователя луча LCMV object™, 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
Поддержка комплексного числа: Да

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

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

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

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

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

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

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

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

Описание

пример

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

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

[Y,W] = beamformer(___) возвращает beamforming веса W. Чтобы использовать этот синтаксис, установите свойство WeightsOutputPort на 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
Поддержка комплексного числа: Да

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

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

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

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

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

Зависимости

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

Примените формирователь луча LCMV к ULA с 5 элементами изотропных элементов датчика, сохранив сигнал от желаемого направления. Рабочая частота составляет 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;

Beamform массив.

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

Постройте сигналы beamformed и оригинал.

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

В этом примере показано, как использовать формирователь луча LCMV, чтобы указать пустой указатель ответа массивов в направлении вмешивающегося источника. Массив является универсальной линейной матрицей (ULA) с 10 элементами. По умолчанию элементами 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, чтобы симулировать прием импульсного сигнала от инцидентного угла.

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

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

jammer = phased.BarrageJammer('ERP',10,'SamplesPerFrame',300);
jamsig = jammer();
jammer_angle = [120;0];
jamsig = collectPlaneWave(array,jamsig,jammer_angle,fc);

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

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, как обучающие данные. Выведите сигнал beamformed и веса формирователя луча.

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

Адаптивный формирователь луча значительно улучшает ОСШ меандра в 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');

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

Алгоритмы

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

Ссылки

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

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

Введенный в R2011a