Этот пример иллюстрирует использование beamscan, MVDR и MUSIC для оценки направления прибытия (DOA). Beamscan является методом, который формирует обычный луч и сканирует его по направлениям интереса получить пространственный спектр. Минимальное отклонение ответ без искажений (MVDR) похоже на beamscan, но использует луч MVDR. Несколько сигнализируют, что классификация (MUSIC) является методом подпространства, который обеспечивает оценки DOA высокого разрешения. Для всех трех методов, peaks выхода пространственный спектр указывают на DOAs полученных сигналов. В этом примере мы иллюстрируем использование 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], поперечный угол совпадает с углом азимута. В следующем мы только выполняем преобразование, когда они не равны.
beamscan алгоритм сканирует обычный луч через предопределенную область сканирования. Здесь мы устанавливаем область сканирования на [-90 90] покрывать все 180 градусов.
spatialspectrum = phased.BeamscanEstimator('SensorArray',ula,... 'OperatingFrequency',fc,'ScanAngles',-90:90);
По умолчанию beamscan средство оценки только производит пространственный спектр через область сканирования. Установите DOAOutputPort свойство на true, чтобы получить оценки DOA. Установите свойство NumSignals на 2 находить местоположения лучших двух peaks.
spatialspectrum.DOAOutputPort = true; spatialspectrum.NumSignals = 2;
Мы теперь получаем пространственный спектр и DOAs. Предполагаемые DOAs показывают правильные значения, которые составляют 40 ° и-20 °.
[~,ang] = spatialspectrum(signal)
ang = 40 -20
Постройте пространственный спектр beamscan выход.
plotSpectrum(spatialspectrum);
Обычный луч не может разрешить два близко расположенных сигнала. Когда два сигнала прибудут от направлений, разделенных меньше, чем, ширина луча, beamscan не оценит направления сигналов. Чтобы проиллюстрировать это ограничение, мы симулируем два полученных сигнала от 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 объект возвращает два максимальных peaks как предполагаемый DOAs, неважно, насколько отличающийся 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 правильно оценивает DOAs, которые неразрешимы beamscan. Улучшенное разрешение идет с ценой. 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 может быть неточным, когда количество источников не задано правильно. Кроме того, амплитуды MUSIC спектральный peaks не могут быть интерпретированы как степень источников.
Для 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 с помощью 10 5 универсального прямоугольного массива (URA). 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
Создайте 2D beamscan объект средства оценки из URA. Этот объект использует тот же алгоритм в качестве 1D случая за исключением того, что это сканирует и по азимуту и по вертикальному изменению вместо поперечных углов.
Область сканирования задана свойством '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 N матрицей, где N является количеством направлений сигнала. Первая строка содержит углы азимута, в то время как вторая строка содержит углы возвышения.
[~,ang] = azelspectrum(signal)
ang = 40 -20 45 20
Постройте 3-D спектр в азимуте и вертикальном изменении.
plotSpectrum(azelspectrum);
Подобно случаю ULA мы используем 2D версию алгоритма 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 являются методами, которые могут быть применены к любому типу массива, но для ULAs и URAs, там дополнительные методы высокого разрешения, которые могут далее использовать геометрию массивов.