phased.LCMVBeamformer

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

Описание

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

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

  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 свойство. Значение единицы создает ответ без искажений, а значение нуля создает ответ null.

Пример: [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 в качестве обучающих данных для вычисления весов формирования луча. Чтобы использовать этот синтаксис, задайте значение свойства TrainingInport true.

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

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

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

Данные элемента массива, заданные как M -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 output, returned as a complex-valued M -by-1 вектор.

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

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

Зависимости

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

Применить 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-формирователь луча для указания значения null отклика массива в направлении интерферирующего источника. Массив представляет собой однородный линейный массив с 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 Системного объекта для моделирования приема импульсного сигнала с угла падения.

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.

Адаптивный формирователь луча значительно улучшает ОСШ прямоугольного импульса на уровне 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. Optimum Array Processing. Нью-Йорк: Wiley-Interscience, 2002.

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

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