该示例显示了如何在两个角度落入阵列响应的主瓣内估计两个单独的信号源的到达角度均匀线性阵列(ULA)。在这种情况下,BeamScan DoA估计器无法解决两个源。但是,使用根部音乐算法的超分辨率DOA估计器能够这样做。
笔记:此示例仅在R2016B或更高版本中运行。如果您使用的是早期版本,请将每个调用替换为等同的函数步
句法。例如,更换myobject(x)
和步骤(myobject,x)
。
绘制ULA的数组响应。放大主叶。
FC = 1E9;lambda = physconst('LightSpeed'/ fc;array = phased.ula('numElements'10,'ElementsPacing',lambda / 2);array.element.frequencyRange = [8E8 1.2E9];PlotResponse(阵列,FC,Physconst('LightSpeed'))轴([ - 25 25-30 0]);
接收两个信号源,其中DOA分隔10°
Ang1 = [30;0];Ang2 = [40;0];nsnapshots = 1000;RNG.默认npower = 0.01;rxsig = sensorsig(getElementPosition(阵列)/ lambda,......nsnapshots,[ang1 ang2],npower);
使用BeamScan估计器估算到达的方向。因为两个DOAS落在阵列响应的主叶内,因为BeamScan DoA估计器无法将它们作为单独的源解析。
BeamScanestimator = Phased.BeamScanestimator('sensorarray',大批,......'运行频率',fc,'扫描',-90:90,......'doaoutputport',真的,'numsignals',2);[〜,sigang] =波束扫描器(rxsig);Plotspectrum(BeamScanestimator)
使用超分辨率DOA估计器来估计两个方向。该估算器提供比非参数BeamScan估算器更好的分辨率。
MusicestImator = Phased.rootmusicestimator('sensorarray',大批,......'运行频率',fc,'numsignalssource'那'财产'那......'numsignals'2,'forwardbackwardaveraging',真的);doa_est = musicestimator(rxsig)
doa_est =1×240.0091 30.0048
该估算器正确地识别了两个不同的到达方向。