Этот пример иллюстрирует использование 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 на истину получать оценки 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, там дополнительные методы высокого разрешения, которые могут далее использовать геометрию массивов.