Этот пример иллюстрирует использование оценки beamscan, MVDR и MUSIC для направления прибытия (DOA). Beamscan является методом, который формирует обычный луч и сканирует его по интересующим направлениям, чтобы получить пространственный спектр. Отклик без искажений минимального отклонения (MVDR) похож на beamscan, но использует луч MVDR. Классификация нескольких сигналов (MUSIC) является подпространственным методом, который обеспечивает оценки DOA высокого разрешения. Для всех трех методов peaks выхода пространственного спектра указывают DOA принятых сигналов. В этом примере мы иллюстрируем использование beamscan, 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);
Мы хотим оценить два DOAs, используя принятый сигнал. Поскольку сигнал принимается 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);
По умолчанию оценщик луча производит только пространственный спектр по области скана. Установите значение свойства DOAOutputPort равным true, чтобы получить оценки DOA. Установите значение свойства NumSignals равным 2, чтобы найти местоположения двух верхних пиков.
spatialspectrum.DOAOutputPort = true; spatialspectrum.NumSignals = 2;
Теперь мы получаем пространственный спектр и DOA. Предполагаемые значения DOA показывают правильные значения, которые составляют 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 из peaks выходных данных beamscan, мы получаем неправильные оценки. Объект beamscan возвращает два максимальных достигать максимума в качестве предполагаемых DOA независимо от того, насколько разный peaks. В этом случае beamscan возвращает малый пик на 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 может привести к худшему пространственному спектру, чем beamscan. Кроме того, если мы дополнительно уменьшим различие двух направлений сигнала до уровня, который меньше, чем ширина луча пучка 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 могут просто вернуть незначительный peaks от правильного пространственного спектра. Напротив, сам пространственный спектр MUSIC может быть неточным, когда количество источников задано неправильно. В сложение амплитуды спектрального peaks 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 случай, за исключением того, что он сканирует и азимут, и повышение вместо широких боковых углов.
Область сканирования задается свойством 'AzimuthScanAngles' и 'ElevationScanAngles'. Чтобы уменьшить вычислительную сложность, мы предполагаем некоторое априорное знание о направлениях входящего сигнала. Мы ограничиваем азимутальный скан область [-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 будет иметь лучшее разрешение, чем beamscan.
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 не делает этого.
В этом примере мы показали, как применить методы beamscan, MVDR и MUSIC к задаче оценки DOA. Мы использовали оба метода, чтобы оценить широкие углы для сигналов, полученных ULA. Алгоритм MVDR имеет лучшее разрешение, чем beamscan, когда нет ошибки положения датчика. MUSIC имеет даже лучшее разрешение, чем MVDR, но количество источников должно быть известно. Мы также проиллюстрировали, как преобразовать азимут и широкие углы. Затем мы применили beamscan, MVDR и MUSIC, чтобы оценить азимут и углы возвышения с помощью URA. Во всех этих случаях мы построили график выхода пространственного спектра и снова обнаружили, что MUSIC имеет лучшее пространственное разрешение. Beamscan, MVDR и MUSIC являются методами, которые могут быть применены к любому типу массива, но для ULA и URA существуют дополнительные методы высокого разрешения, которые могут дополнительно использовать геометрию массива.