Этот пример иллюстрирует использование сканирования луча, MVDR и MUSIC для оценки направления поступления (DOA). Beamscan - это технология, которая формирует обычный луч и сканирует его по интересующим направлениям для получения пространственного спектра. Реакция без искажения минимальной дисперсии (MVDR) аналогична сканированию луча, но использует луч MVDR. Классификация множественных сигналов (MUSIC) является методом подпространства, который обеспечивает оценки DOA высокого разрешения. Для всех трех способов пики выходного пространственного спектра указывают DOA принятых сигналов. В этом примере мы иллюстрируем использование диаграммы направленности, MVDR и MUSIC для оценки широкополосных углов с однородным линейным массивом (ULA) и азимутальных и высотных углов с однородным прямоугольным массивом (URA).
Сначала моделируют однородную линейную матрицу (ULA), содержащую 10 изотропных антенн, разнесенных на 0,5 метра.
ula = phased.ULA('NumElements',10,'ElementSpacing',0.5);
Предположим, что два узкополосных сигнала попадают в массив. Первый сигнал поступает от 40 ° по азимуту и 0 ° по возвышению, а второй сигнал поступает от -20 ° по азимуту и 0 ° по возвышению. Рабочая частота системы - 300 МГц.
ang1 = [40; 0]; % First signal ang2 = [-20; 0]; % Second signal angs = [ang1 ang2]; c = physconst('LightSpeed'); fc = 300e6; % Operating frequency lambda = c/fc; pos = getElementPosition(ula)/lambda; Nsamp = 1000;
Также предположим, что мощность теплового шума на каждой антенне составляет 0,01 Вт.
nPower = 0.01;
Генерация многоканального сигнала, принимаемого ULA.
rs = rng(2007); signal = sensorsig(pos,Nsamp,angs,nPower);
Мы хотим оценить два DOA, используя принятый сигнал. Поскольку сигнал принимается ULA, которая симметрична вокруг своей оси, мы не можем получить одновременно и азимут, и отметку. Вместо этого мы можем оценить широкополосный угол, который измеряется от ширины ULA. Взаимосвязь между этими углами показана на следующем рисунке:

Широкими углами, соответствующими двум направлениям падения, являются:
broadsideAngle = az2broadside(angs(1,:),angs(2,:))
broadsideAngle = 40.0000 -20.0000
Мы видим, что два широкополосных угла совпадают с азимутальными углами. Как правило, когда угол возвышения равен нулю, а азимутальный угол находится в пределах [-90 90], широкополосный угол совпадает с азимутальным углом. Далее мы выполняем преобразование только тогда, когда они не равны.
Алгоритм сканирования луча сканирует обычный луч через заранее определенную область сканирования. Здесь мы задаем область сканирования [-90 90], чтобы охватить все 180 градусов.
spatialspectrum = phased.BeamscanEstimator('SensorArray',ula,... 'OperatingFrequency',fc,'ScanAngles',-90:90);
По умолчанию блок оценки диаграммы направленности создает только пространственный спектр по всей области сканирования. Для получения оценок DOA установите для свойства DOAOutablePort значение true. Установите для свойства NumSignals значение 2, чтобы найти расположения двух верхних пиков.
spatialspectrum.DOAOutputPort = true; spatialspectrum.NumSignals = 2;
Теперь мы получаем пространственный спектр и ДОУ. Расчетные ДОУ показывают правильные значения, которые составляют 40 ° и -20 °.
[~,ang] = spatialspectrum(signal)
ang =
40 -20
Постройте график пространственного спектра выходного сигнала сканирования луча.
plotSpectrum(spatialspectrum);

Обычный луч не может разрешить два близко расположенных сигнала. Когда два сигнала поступают из направлений, разделенных меньшей, чем ширина луча, лучистая развертка не сможет оценить направления сигналов. Для иллюстрации этого ограничения мы моделируем два принятых сигнала от 30 ° и 40 ° по азимуту.
ang1 = [30; 0]; ang2 = [40; 0]; signal = sensorsig(pos,Nsamp,[ang1 ang2],nPower); [~,ang] = spatialspectrum(signal)
ang =
35 71
Результаты отличаются от истинных азимутальных углов. Давайте посмотрим на выходной спектр.
plotSpectrum(spatialspectrum);

Выходной пространственный спектр имеет только один доминирующий пик. Поэтому он не может разрешить эти два близко расположенных сигнала. Когда мы пытаемся оценить DOA по пикам выхода beamscan, мы получаем неверные оценки. Объект beamscan возвращает два максимальных пика в качестве расчетных DOA независимо от того, насколько отличаются пики. В этом случае лучискан возвращает малый пик при 71 ° в качестве второй оценки.
Чтобы разрешить близко расположенные сигналы, мы можем использовать алгоритм с минимальной дисперсией без искажений (MVDR) или алгоритм с множественной классификацией сигналов (MUSIC). Сначала рассмотрим модуль оценки MVDR, который сканирует луч MVDR по указанной области. Поскольку луч MVDR имеет меньшую ширину луча, он имеет более высокое разрешение.
mvdrspatialspect = phased.MVDREstimator('SensorArray',ula,... 'OperatingFrequency',fc,'ScanAngles',-90:90,... 'DOAOutputPort',true,'NumSignals',2); [~,ang] = mvdrspatialspect(signal) plotSpectrum(mvdrspatialspect);
ang =
30 40

Алгоритм MVDR правильно оценивает DOA, которые не могут быть решены с помощью сканирования луча. Улучшенное разрешение поставляется с ценой. MVDR более чувствителен к ошибкам положения датчика. В случаях, когда положения датчиков неточны, MVDR может дать худший пространственный спектр, чем сканирование луча. Кроме того, если дополнительно уменьшить разность двух направлений сигнала до уровня, который меньше, чем ширина луча MVDR, блок оценки MVDR также потерпит неудачу.
Алгоритм MUSIC также может использоваться для разрешения этих близко расположенных сигналов. Оцените направления прихода двух источников и сравните пространственный спектр MVDR с пространственным спектром MUSIC.
musicspatialspect = phased.MUSICEstimator('SensorArray',ula,... 'OperatingFrequency',fc,'ScanAngles',-90:90,... 'DOAOutputPort',true,'NumSignalsSource','Property','NumSignals',2); [~,ang] = musicspatialspect(signal) ymvdr = mvdrspatialspect(signal); ymusic = musicspatialspect(signal); helperPlotDOASpectra(mvdrspatialspect.ScanAngles,... musicspatialspect.ScanAngles,ymvdr,ymusic,'ULA')
ang =
30 40

Направления прибытия с помощью MUSIC верны, и MUSIC обеспечивает даже лучшее пространственное разрешение, чем MVDR. MUSIC, как и MVDR, чувствителен к ошибкам положения датчика. Кроме того, количество источников должно быть известно или точно оценено. Когда число указанных источников неверно, MVDR и Beamscan могут просто возвращать незначительные пики из правильного пространственного спектра. Напротив, сам пространственный спектр MUSIC может быть неточным, когда количество источников указано неправильно. Кроме того, амплитуды спектральных пиков MUSIC не могут быть интерпретированы как мощность источников.
Для ULA дополнительные алгоритмы высокого разрешения могут дополнительно использовать специальную геометрию ULA. См. раздел Оценка направления поступления с высоким разрешением.
Хотя мы можем оценить только широкополосные углы, используя ULA, мы можем преобразовать оцененные широкополосные углы в азимутальные углы, если мы знаем их входящие отметки. Теперь мы моделируем два сигнала, идущих от 35 ° по высоте, и оцениваем их соответствующие широкополосные углы.
ang1 = [40; 35]; ang2 = [15; 35]; signal = sensorsig(pos,Nsamp,[ang1 ang2],nPower); [~,ang] = mvdrspatialspect(signal)
ang =
32 12
Полученные в результате широкополосные углы отличаются от азимутальных или высотных углов. Мы можем преобразовать широкополосные углы в азимутальные углы, если знаем высоту.
ang = broadside2az(ang,35)
ang = 40.3092 14.7033
Далее мы иллюстрируем оценку DOA с использованием однородного прямоугольного массива (URA) 10 на 5. URA может оценивать как азимут, так и углы возвышения. Расстояние между элементами составляет 0,3 метра между каждым рядом и 0,5 метра между каждым столбцом.
ura = phased.URA('Size',[10 5],'ElementSpacing',[0.3 0.5]);
Предположим, что два сигнала попадают в URA. Первый сигнал поступает от 40 ° по азимуту и 45 ° по возвышению, а второй сигнал поступает от -20 ° по азимуту и 20 ° по возвышению.
ang1 = [40; 45]; % First signal ang2 = [-20; 20]; % Second signal signal = sensorsig(getElementPosition(ura)/lambda,Nsamp, ... [ang1 ang2],nPower); rng(rs); % Restore random number generator
Создайте 2-D объект оценки диаграммы направленности из URA. Этот объект использует тот же алгоритм, что и в 1-D случае, за исключением того, что он сканирует по азимуту и отметке вместо широкополосных углов.
Область сканирования задается свойствами «» AzimingScanGelgs «» и «» EvationScanGelgs «». Для уменьшения вычислительной сложности мы предполагаем некоторые априорные знания о направлениях входящего сигнала. Область сканирования по азимуту ограничена [-45 45], а область сканирования по высотам - [10 60].
azelspectrum = phased.BeamscanEstimator2D('SensorArray',ura,... 'OperatingFrequency',fc,... 'AzimuthScanAngles',-45:45,'ElevationScanAngles',10:60,... 'DOAOutputPort',true,'NumSignals',2);
Выходной сигнал DOA представляет собой матрицу 2-by-N, где N - число направлений сигнала. Первый ряд содержит азимутальные углы, а второй ряд содержит углы места.
[~,ang] = azelspectrum(signal)
ang =
40 -20
45 20
Постройте график 3-D спектра по азимуту и отметке.
plotSpectrum(azelspectrum);

Аналогично случаю ULA, мы используем 2-D версию алгоритма MVDR. Поскольку наши знания о позициях датчиков идеальны, мы ожидаем, что спектр MVDR будет иметь лучшее разрешение, чем сканирование луча.
mvdrazelspectrum = phased.MVDREstimator2D('SensorArray',ura,... 'OperatingFrequency',fc,... 'AzimuthScanAngles',-45:45,'ElevationScanAngles',10:60,... 'DOAOutputPort',true,'NumSignals',2); [~,ang] = mvdrazelspectrum(signal) plotSpectrum(mvdrazelspectrum);
ang =
-20 40
20 45

Мы также можем использовать алгоритм MUSIC для оценки направлений прихода двух источников.
musicazelspectrum = phased.MUSICEstimator2D('SensorArray',ura,... 'OperatingFrequency',fc,... 'AzimuthScanAngles',-45:45,'ElevationScanAngles',10:60,... 'DOAOutputPort',true,'NumSignalsSource','Property','NumSignals',2); [~,ang] = musicazelspectrum(signal) plotSpectrum(musicazelspectrum);
ang =
-20 40
20 45

Для сравнения оценок MVDR и MUSIC рассмотрим источники, расположенные еще ближе друг к другу. С помощью MVDR и MUSIC вычислить пространственный спектр двух источников, расположенных на 10 ° по азимуту и разделенных на 3 ° по высоте.
ang1 = [10; 20]; % First signal ang2 = [10; 23]; % Second signal signal = sensorsig(getElementPosition(ura)/lambda,Nsamp, ... [ang1 ang2],nPower); [~,angmvdr] = mvdrazelspectrum(signal) [~,angmusic] = musicazelspectrum(signal)
angmvdr =
10 -27
22 21
angmusic =
10 10
23 20
В этом случае только MUSIC правильно оценивает направления прибытия для двух источников. Чтобы увидеть причину, постройте график разреза по высоте каждого пространственного спектра на азимуте 10 °.
ymvdr = mvdrazelspectrum(signal); ymusic = musicazelspectrum(signal); helperPlotDOASpectra(mvdrazelspectrum.ElevationScanAngles,... musicazelspectrum.ElevationScanAngles,ymvdr(:,56),ymusic(:,56),'URA')

Поскольку спектр MUSIC имеет лучшее пространственное разрешение, чем MVDR, MUSIC правильно идентифицирует источники, в то время как MVDR не делает этого.
В этом примере мы показали, как применить методы сканирования луча, MVDR и MUSIC к проблеме оценки DOA. Мы использовали оба метода для оценки широкополосных углов для сигналов, принимаемых ULA. Алгоритм MVDR имеет лучшее разрешение, чем при сканировании луча при отсутствии ошибки положения датчика. MUSIC имеет даже лучшее разрешение, чем MVDR, но количество источников должно быть известно. Мы также проиллюстрировали, как преобразовывать азимут и широкополосные углы. Затем мы применили сканирование луча, MVDR и MUSIC, чтобы оценить азимут и углы возвышения с помощью URA. Во всех этих случаях мы построили график выходного пространственного спектра и снова обнаружили, что MUSIC имеет лучшее пространственное разрешение. Beamscan, MVDR и MUSIC - это методы, которые могут быть применены к массиву любого типа, но для ULA и URA существуют дополнительные методы высокого разрешения, которые могут дополнительно использовать геометрию массива.