此示例显示了如何从两个单独的信号源估算到达的角度时,当两个角度都落在阵列响应的主叶中,一个均匀的线性阵列(ULA)。在这种情况下,BeamScan DOA估计器无法解析这两个源。但是,使用Root Music算法的超分辨率DOA估计器能够做到这一点。
笔记:此示例仅在R2016B或更高版本中运行。如果您使用的是较早的版本,请用等效替换每个呼叫对函数的调用步
句法。例如,替换myObject(x)
和步骤(MyObject,X)
。
绘制ULA的阵列响应。放大主叶。
FC = 1E9;lambda = physconst(“ Lightspeed”)/fc;阵列= phased.ula(“计数”,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(array)/lambda,...nsnapshots,[ang1 ang2],npower);
使用BeamScan估计器估算到达的方向。由于两个DOA都落在阵列响应的主叶内,因此BeamScan DOA估计器无法将它们作为单独的来源解析。
BeamScanestimator =分阶段。BeamScanestimator(“感觉运动”,大批,...'工作频率',fc,“扫描”,-90:90,...“ doaoutputport”,真的,“数字信号”,2);[〜,sigang] = beamscanestimator(rxsig);Plotspectrum(Beamscanestimator)
使用超分辨率DOA估计器估计两个方向。该估计器提供的分辨率比非参数Beamscan估计器更好。
MusicEstimator = phase.RootMusicEstimator(“感觉运动”,大批,...'工作频率',fc,'numsignalssource',,,,'财产',,,,...“数字信号”,2,“前卫”,真的);doa_est = musicEstimator(rxsig)
doa_est =1×240.0091 30.0048
该估计器正确地标识了到达的两个不同方向。