Этот пример иллюстрирует несколько методов оценки направления прибытия (DOA) с высоким разрешением. В нем представлены варианты алгоритмов MUSIC, root-MUSIC, ESPRIT и root-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, используйте метод root-MUSIC. Создайте оценку DOA, используя алгоритм root-MUSIC.
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 оценщика root-MUSIC DOA в true. В этом случае алгоритм root-MUSIC также называется унитарным алгоритмом root-MUSIC.
rootmusicangle.ForwardBackwardAveraging = true;
Выполните оценку DOA:
ang = rootmusicangle(signal)
ang = 1×2
16.9960 21.9964
Мы также можем использовать оценку ESPRIT DOA. Как и в случае root-MUSIC, задайте значение свойства 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
Наконец, используйте оценку MUSIC DOA. MUSIC также поддерживает прямое-обратное среднее. В отличие от ESPRIT и root-MUSIC, 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: [1x181 double] DOAOutputPort: true NumSignals: 2 NumSignalsSource: 'Property'
[~,ang] = musicangle(signal)
ang = 1×2
17 22
plotSpectrum(musicangle)
Направления прибытия для MUSIC ограничены углами скана в ScanAngles
свойство. Потому что истинные направления прибытия в этом примере совпадают с углами поиска в ScanAngles
, MUSIC предоставляет точные оценки угла DOA. На практике root-MUSIC обеспечивает превосходное разрешение по сравнению с MUSIC. Однако алгоритм MUSIC может также использоваться для оценки DOA как в азимуте, так и на высоте с помощью 2-D массива. Смотрите оценку направления прибытия с 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
В дополнение к прямому и обратному усреднению, другие методы могут уменьшить вычислительную сложность. Одним из таких подходов является решение эквивалентной задачи с уменьшенными размерностями в пространстве луча. В то время как алгоритм ESPRIT выполняет разложение собственных значений (EVD) действительной матрицы 10x10 в нашем примере, версия пространства луча может уменьшить задачу до 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
16.9961 21.9962
В дополнение к усреднению 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
Алгоритм root-WSF является устойчивым в контексте коррелированных сигналов. При правильном количестве источников в качестве входов алгоритм правильно оценивает направления прибытия.
release(rootwsfangle);
rootwsfangle.NumSignalsSource = 'Property';
rootwsfangle.NumSignals = 4;
ang = rootwsfangle(signal)
ang = 1×4
40.0016 -22.9919 12.0693 0.0737
ESPRIT, root-MUSIC и 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
Можно применить пространственное сглаживание, чтобы оценить DOA коррелированных сигналов. Однако использование пространственного сглаживания уменьшает эффективную апертуру массива. Поэтому отклонение оценок увеличивается, потому что подрешетки меньше исходного массива.
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, root-MUSIC и root-WSF являются важными алгоритмами DOA, которые обеспечивают хорошую эффективность и разумную вычислительную сложность для ULA. Унитарные ESPRIT, унитарные root-MUSIC и beamspace унитарные ESPRIT обеспечивают способы значительно снизить вычислительные затраты оценщиков, одновременно улучшая их эффективность. root-WSF особенно привлекателен в контексте коррелированных источников, потому что, вопреки другим способам, он не требует пространственного сглаживания, чтобы правильно оценить DOA, когда количество источников известно.