Этот пример иллюстрирует несколько методов оценки направления прибытия (DOA) с высоким разрешением. Это вводит варианты MUSIC, корневой МУЗЫКИ, ESPRIT и алгоритмов корневого WSF и обсуждает их соответствующие достоинства в контексте далекого поля, узкополосные источники сигнала, полученные антенной универсальной линейной матрицы (ULA).
Задайте универсальную линейную матрицу (ULA), состоявшую из 10 изотропных антенн. Интервал элемента массива составляет 0,5 метра.
N = 10; ula = phased.ULA('NumElements',N,'ElementSpacing',0.5)
ula = phased.ULA with properties: Element: [1x1 phased.IsotropicAntennaElement] NumElements: 10 ElementSpacing: 0.5000 ArrayAxis: 'y' Taper: 1
Симулируйте массив выход для двух инцидентных сигналов. Оба сигнала являются инцидентом от 90 ° в азимуте. Их углы возвышения составляют 73 ° и 68 ° соответственно. В этом примере мы принимаем, что эти два направления неизвестны и должны быть оценены. Симулируйте основную полосу полученный сигнал в массиве, демодулируемом от рабочей частоты 300 МГц.
fc = 300e6; % Operating frequency fs = 8192; % Sampling frequency lambda = physconst('LightSpeed')/fc; % Wavelength pos = getElementPosition(ula)/lambda; % Element position in wavelengths ang1 = [90;73]; ang2 = [90;68]; % Direction of the signals angs = [ang1 ang2]; Nsamp = 1024; % Number of snapshots noisePwr = 0.01; % Noise power rs = rng(2012); % Set random number generator signal = sensorsig(pos,Nsamp,angs,noisePwr);
Поскольку ULA симметричен вокруг своей оси, алгоритм DOA не может исключительно определить азимут и вертикальное изменение. Поэтому результаты, возвращенные этими средствами оценки DOA с высоким разрешением, в форме поперечных углов. Рисунок поперечных углов может быть найден в следующем рисунке.
Вычислите поперечные углы, соответствующие двум инцидентным углам.
ang_true = az2broadside(angs(1,:),angs(2,:))
ang_true = 1×2
17.0000 22.0000
Поперечные углы составляют 17 ° и 22 °.
Примите, что мы знаем априорно, что существует два источника. Чтобы оценить DOA, используйте метод корневой МУЗЫКИ. Создайте средство оценки DOA с помощью алгоритма корневой МУЗЫКИ.
rootmusicangle = phased.RootMUSICEstimator('SensorArray',ula,... 'OperatingFrequency',fc,... 'NumSignalsSource','Property','NumSignals',2)
rootmusicangle = phased.RootMUSICEstimator with properties: SensorArray: [1x1 phased.ULA] PropagationSpeed: 299792458 OperatingFrequency: 300000000 NumSignalsSource: 'Property' NumSignals: 2 ForwardBackwardAveraging: false SpatialSmoothing: 0
Поскольку вектор отклика массивов ULA сопряжен симметричный, мы можем использовать усреднение прямого обратного (FB), чтобы выполнить расчеты с действительными матрицами и уменьшать вычислительную сложность. Основанные на FB средства оценки также имеют более низкое отклонение и уменьшают корреляцию между сигналами.
Чтобы применить прямое обратное усреднение, установите свойство ForwardBackwardAveraging средства оценки DOA корневой МУЗЫКИ к истине. В этом случае алгоритм корневой МУЗЫКИ также называется унитарным алгоритмом корневой МУЗЫКИ.
rootmusicangle.ForwardBackwardAveraging = true;
Выполните оценку DOA:
ang = rootmusicangle(signal)
ang = 1×2
16.9960 21.9964
Мы можем также использовать средство оценки DOA ESPRIT. Как в случае корневой МУЗЫКИ, установленной ForwardBackwardAveraging свойство на true. Этот алгоритм также называется унитарным ESPRIT.
espritangle = phased.ESPRITEstimator('SensorArray',ula,... 'OperatingFrequency',fc,'ForwardBackwardAveraging',true,... 'NumSignalsSource','Property','NumSignals',2)
espritangle = phased.ESPRITEstimator with properties: SensorArray: [1x1 phased.ULA] PropagationSpeed: 299792458 OperatingFrequency: 300000000 NumSignalsSource: 'Property' NumSignals: 2 SpatialSmoothing: 0 Method: 'TLS' ForwardBackwardAveraging: true RowWeighting: 1
ang = espritangle(signal)
ang = 1×2
21.9988 16.9748
Наконец, используйте средство оценки DOA MUSIC. MUSIC Также поддерживает прямое обратное усреднение. В отличие от ESPRIT и корневой МУЗЫКИ, MUSIC вычисляет пространственный спектр для заданных поперечных углов сканирования. Направления прибытия соответствуют peaks в MUSIC пространственный спектр.
musicangle = phased.MUSICEstimator('SensorArray',ula,... 'OperatingFrequency',fc,'ForwardBackwardAveraging',true,... 'NumSignalsSource','Property','NumSignals',2,... 'DOAOutputPort',true)
musicangle = phased.MUSICEstimator with properties: SensorArray: [1x1 phased.ULA] PropagationSpeed: 299792458 OperatingFrequency: 300000000 ForwardBackwardAveraging: true SpatialSmoothing: 0 ScanAngles: [-90 -89 -88 -87 -86 -85 -84 -83 -82 -81 ... ] DOAOutputPort: true NumSignals: 2 NumSignalsSource: 'Property'
[~,ang] = musicangle(signal)
ang = 1×2
17 22
plotSpectrum(musicangle)
Направления прибытия для MUSIC ограничиваются углами сканирования в ScanAngles
свойство. Поскольку истинные направления прибытия в этот пример совпадают с поисковыми углами в ScanAngles
, MUSIC обеспечивает точные угловые оценки DOA. На практике корневая МУЗЫКА обеспечивает превосходящее разрешение MUSIC. Однако алгоритм MUSIC может также использоваться для оценки DOA и азимут и вертикальное изменение с помощью 2D массива. Смотрите Направление Оценки Прибытия с Beamscan, MVDR и MUSIC.
На практике вы обычно не знаете количество источников сигнала и должны оценить количество источников от полученного сигнала. Можно оценить количество источников сигнала путем определения 'Auto' для свойства NumSignalsSource и выбора 'AIC' или 'MDL' для свойства NumSignalsMethod. Для AIC Критерий информации о Akaike (AIC) используется, и для MDL, критерий минимальной длины описания (MDL) используется.
Прежде чем можно будет установить NumSignalsSource, необходимо выпустить объект DOA, потому что это заблокировано, чтобы повысить эффективность во время обработки.
release(espritangle); espritangle.NumSignalsSource = 'Auto'; espritangle.NumSignalsMethod = 'AIC'; ang = espritangle(signal)
ang = 1×2
21.9988 16.9748
В дополнение к прямому обратному усреднению другие методы могут уменьшать вычислительную сложность. Один из этих подходов должен решить эквивалентную задачу с уменьшаемыми размерностями в beamspace. В то время как алгоритм ESPRIT выполняет разложение собственного значения (EVD) 10x10 действительная матрица в нашем примере, beamspace версия может уменьшать проблему до EVD 3x3 действительная матрица. Этот метод использует априорное знание сектора, где сигналы расположены, чтобы расположить центр вентилятора луча. В этом примере укажите вентилятору луча на 20 ° в азимуте.
bsespritangle = phased.BeamspaceESPRITEstimator('SensorArray',ula,... 'OperatingFrequency',fc,... 'NumBeamsSource','Property','NumBeams',3,... 'BeamFanCenter',20); ang = bsespritangle(signal)
ang = 1×2
21.9875 16.9943
Другой метод является взвешенным корнем подпространством, подходящим (WSF) алгоритм. Этот алгоритм является итеративным и самым требовательным в терминах вычислительной сложности. Можно определить максимальный номер итераций путем определения свойства MaximumIterationCount обеспечить стоимость ниже определенного предела.
rootwsfangle = phased.RootWSFEstimator('SensorArray',ula,... 'OperatingFrequency',fc,'MaximumIterationCount',2); ang = rootwsfangle(signal)
ang = 1×2
21.9962 16.9961
В дополнение к усреднению FB можно использовать взвешивание строки, чтобы улучшать статистическую производительность пробела элемента средство оценки ESPRIT. Взвешивание строки является методом, который применяет различные веса к строкам матрицы подпространства сигнала. Весовой коэффициент строки определяет максимальный вес. В большинстве случаев это выбрано, чтобы быть как можно больше. Однако его значение никогда не может быть больше (N-1)/2, где N является числом элементов массива.
release(espritangle); espritangle.RowWeighting = 4
espritangle = phased.ESPRITEstimator with properties: SensorArray: [1x1 phased.ULA] PropagationSpeed: 299792458 OperatingFrequency: 300000000 NumSignalsSource: 'Auto' NumSignalsMethod: 'AIC' SpatialSmoothing: 0 Method: 'TLS' ForwardBackwardAveraging: true RowWeighting: 4
ang = espritangle(signal)
ang = 1×2
21.9884 17.0003
Если несколько источников коррелируются или когерентные (как в лучевых средах), пространственная ковариационная матрица становится неполным рангом, и основанные на подпространстве методы оценки DOA могут перестать работать. Чтобы показать это, смоделируйте полученный сигнал, состоявший из 4 узкополосных компонентов. Примите, что 2 из первых 3 сигналов являются многопутевыми отражениями первого источника, имея величины, равные 1/4 и 1/2 тот из первого источника, соответственно.
scov = eye(4); magratio = [1;0.25;0.5]; scov(1:3,1:3) = magratio*magratio';
Все сигналы являются инцидентом при вертикальном изменении на 0 °, с углами инцидента азимута-23 °, 0 °, 12 ° и 40 °.
% Incident azimuth az_ang = [-23 0 12 40]; % When the elevation is zero, the azimuth within [-90 90] is the same as % the broadside angle. el_ang = zeros(1,4); % The received signals signal = sensorsig(pos,Nsamp,[az_ang; el_ang],noisePwr,scov); rng(rs); % Restore random number generator
Сравните эффективность алгоритма DOA, когда источники будут когерентными. Чтобы упростить пример, запустите только одно испытание на алгоритм. Учитывая высокий ОСШ, результатами будет хороший индикатор точности оценки.
Во-первых, проверьте, что критерий AIC недооценивает количество источников, заставляя унитарный алгоритм ESPRIT дать неправильные оценки. AIC оценивает количество источников как два, потому что коррелируются три источника.
release(espritangle); espritangle.NumSignalsSource = 'Auto'; espritangle.NumSignalsMethod = 'AIC'; ang = espritangle(signal)
ang = 1×2
-15.3535 40.0024
Алгоритм корневого WSF устойчив в контексте коррелированых сигналов. С правильным количеством источников как вход алгоритм правильно оценивает направления прибытия.
release(rootwsfangle);
rootwsfangle.NumSignalsSource = 'Property';
rootwsfangle.NumSignals = 4;
ang = rootwsfangle(signal)
ang = 1×4
40.0016 -22.9919 12.0693 0.0737
ESPRIT, корневой МУЗЫКЕ, и MUSIC, однако, не удается оценить правильные направления прибытия, даже если мы задаем количество источников и используем унитарные реализации.
release(rootmusicangle);
rootmusicangle.NumSignalsSource = 'Property';
rootmusicangle.NumSignals = 4;
rootmusicangle.ForwardBackwardAveraging = true;
ang = rootmusicangle(signal)
ang = 1×4
40.0077 -22.8313 4.4976 -11.9038
Можно применить пространственное сглаживание, чтобы оценить DOAs коррелированых сигналов. Используя пространственное сглаживание, однако, уменьшает эффективную апертуру массива. Поэтому отклонение средств оценки увеличивается, потому что подрешетки меньше, чем исходный массив.
release(rootmusicangle);
Nr = 2; % Number of multipath reflections
rootmusicangle.SpatialSmoothing = Nr
rootmusicangle = phased.RootMUSICEstimator with properties: SensorArray: [1x1 phased.ULA] PropagationSpeed: 299792458 OperatingFrequency: 300000000 NumSignalsSource: 'Property' NumSignals: 4 ForwardBackwardAveraging: true SpatialSmoothing: 2
ang = rootmusicangle(signal)
ang = 1×4
40.0010 -22.9959 12.1376 0.1843
Таким образом, ESPRIT, MUSIC, корневая МУЗЫКА и корневой WSF являются важными алгоритмами DOA, которые обеспечивают хорошую эффективность и разумную вычислительную сложность для ULAs. Унитарный ESPRIT, унитарная корневая МУЗЫКА и beamspace унитарный ESPRIT обеспечивают способы значительно уменьшать вычислительную стоимость средств оценки, также улучшая их производительность. корневой WSF особенно привлекателен в контексте коррелированых источников, потому что вопреки другим методам это не требует, чтобы пространственное сглаживание правильно оценило DOAs, когда количество источников известно.