主要内容

生成MEX函数来估计到达方向

编译,使用codegen(MATLAB编码器),函数EstimateDOA.m.该函数估计由标准10元统一线阵列(ULA)接收的带有附加噪声的两个信号的到达方向(DOA)。天线工作频率为150兆赫兹,阵列元件间隔一半波长。第一个信号到达的实际方向为方位角10°,仰角20°。第二个信号到达的方向是方位45°,仰角60°。信号和噪声是使用sensorsig函数。

函数[az] = EstimateDOA()%的例子:估计一个标准接收到的两个信号的DOAs% 10元素ULA,元素间距为半波长。天线工作频率为150mhz。第一个信号的实际方向是10度%方位角和20度仰角。的方向%秒信号是方位45度,方位60度%高程。C = physconst(“光速”);Fc = 150e6;Lambda = c/fc;Fs = 8000;Nsamp = 8000;σ = 0.1;Ang = [10 20;45 60];天线=相控。IsotropicAntennaElement (...“FrequencyRange”[100 e6,300e6]);阵列=相控阵。齿龈(“元素”、天线、“NumElements”10...“ElementSpacing”λ/ 2);pos = getElementPosition(array)/lambda;Sig = sensorsig(pos,nsamp,ang,sigma^2);估计器=阶段性。RootMUSICEstimator (“SensorArray”数组,...“OperatingFrequency”足球俱乐部,...“NumSignalsSource”“属性”“NumSignals”2);Doas =估计量(sig);Az = broadside2az(sort(doas),[20,60]);结束

运行codegen(MATLAB编码器)在命令行中生成mex函数,EstimateDOA_mex,然后运行mex函数:

codegenEstimateDOA.mEstimateDOA_mex

预计到达角度为:

Az = 10.0036 45.0030

该程序包含一个固定的噪声方差值。如果希望针对不同的噪声级别重用相同的代码,可以将噪声方差作为参数传递到函数中。这在函数中完成EstimateDOA1.m,如这里所示,其中有input参数σ

函数[az] = EstimateDOA1(sigma)%的例子:估计一个标准接收到的两个信号的DOAs% 10元素ULA,元素间距为半波长。天线工作频率为150mhz。第一个信号的实际方向是10度%方位角和20度仰角。的方向%秒信号是方位45度,方位60度%高程。C = physconst(“光速”);Fc = 150e6;Lambda = c/fc;Fs = 8000;Nsamp = 8000;Ang = [10 20;45 60];天线=相控。IsotropicAntennaElement (...“FrequencyRange”[100 e6,300e6]);阵列=相控阵。齿龈(“元素”、天线、“NumElements”10...“ElementSpacing”λ/ 2);pos = getElementPosition(array)/lambda;Sig = sensorsig(pos,nsamp,ang,sigma^2);估计器=阶段性。RootMUSICEstimator (“SensorArray”数组,...“OperatingFrequency”足球俱乐部,...“NumSignalsSource”“属性”“NumSignals”2);Doas =估计量(sig);Az = broadside2az(sort(doas),[20,60]);结束

运行codegen(MATLAB编码器)在命令行中生成mex函数,EstimateDOA1_mex,使用arg游戏选项指定输入参数的类型。然后使用几个不同的输入参数运行mex函数:

codegenEstimateDOA1.marg游戏{1}EstimateDOA1_mex(1) az = 10.0130 45.0613 EstimateDOA1_mex(10) az = 10.1882 44.3327 EstimateDOA1_mex(15) az = 8.1620 46.2440

增加价值σ降低方位角的估计。