阵图综合第二部分:优化
这个例子展示了如何使用优化技术来执行模式综合。以最小方差波束形成为例,介绍了如何将模式综合设置为优化问题,然后使用优化求解器进行求解。
模式合成可以使用多种技术来实现。的阵列模式综合第一部分:空化、开窗和细化示例介绍了空化和窗口技术。
此示例需要“优化工具箱”™。
最小方差波束形成
与单一元件相比,相控阵的一个主要优点是形成波束的能力。一般来说,N元相控阵在合成图形时提供N个自由度,这意味着可以调整N个权重,每个元素一个,以控制波束的形状以满足一些预定义的约束。
许多流行的波束形成技术可以表示为优化问题。例如,流行的最小方差无失真响应波束形成器(MVDR)用于最小化总噪声输出,同时保留来自给定方向的信号。在数学上,通过求解优化问题可以得到MVDR波束形成权值
在哪里<年代pan class="inlineequation"> 是协方差矩阵,<年代pan class="inlineequation"> 光束是否朝着这个方向响应<年代pan class="inlineequation"> 用权重向量<年代pan class="inlineequation"> ,<年代pan class="inlineequation"> 是包含最优权值的向量。因为光束图案可以写成
在哪里<年代pan class="inlineequation"> 转向矢量是否与角度相对应<年代pan class="inlineequation"> 时,约束在复域中呈线性关系。
的无扭曲约束<年代pan class="inlineequation"> 在设计空间中只需要1个自由度。因为n元素数组可以处理<年代pan class="emphasis">N- 1个约束,MVDR波束器可以扩展到包含更多的约束,这导致线性约束最小方差(LCMV)波束器。LCMV波束形成器中的额外约束通常用于消除来自给定方向的干扰。因此,这种LCMV波束形成器可以解决以下优化问题
在哪里<年代pan class="inlineequation"> 代表了<年代pan class="inlineequation"> 零方向<年代pan class="inlineequation"> 空方向总数。由于所有约束条件在复域内都是线性的,因此LCMV波束分布权值可以用拉格朗日乘子法进行解析推导。
接下来,使用半波长间距的32元ULA演示如何使用LCMV方法进行阵列合成。请注意,尽管本例使用线性数组,但该技术适用于任何数组几何结构。假设感兴趣的信号在0度方位角,干扰在-70度、- 40度和-20度方位角。噪声功率假定为低于信号40分贝。LCMV权重的封闭形式解可以使用lcmvweights
函数。
N = 32;pos = (0:N-1)*0.5;<年代pan style="color:#228B22">元素位置百分比Ang_i = [-70 -40 -20];<年代pan style="color:#228B22">干涉角%Ang_d = 0;<年代pan style="color:#228B22">%期望角度Rn = sensorcov(pos,ang_i,db2pow(-40));<年代pan style="color:#228B22">%噪声协方差矩阵Sv_c = steervec(pos,[ang_d ang_i]);<年代pan style="color:#228B22">线性约束R_c = [1 0 (size(ang_i))]';<年代pan style="color:#228B22">%期望响应w_lcmv = lcmvweights(sv_c,r_c,Rn);<年代pan style="color:#228B22">% LCMV权重Ang_plot = -90:0.1:90;Sv_plot = steervec(pos,ang_plot);PLCMV = plot(ang_plot,mag2db(abs(w_lcmv'*sv_plot))));参照线(ang_i<年代pan style="color:#A020F0">”——“) ylim([-100 0]<年代pan style="color:#A020F0">在传奇(plcmv<年代pan style="color:#A020F0">“LCMV -分析”)包含(<年代pan style="color:#A020F0">方位角(度)) ylabel (<年代pan style="color:#A020F0">“光束图(dB)”)
从图中可以看出,计算出的权重满足所有约束条件。
基于二次规划的LCMV波束形成
由于LCMV波束形成可以被描述为一个优化问题,看看如何使用优化技术来解决这个问题将是有用的。当一个封闭形式的解决方案不可用时,例如当约束包含不等式时,这样的工作流就变得很重要。
当使用优化技术执行模式综合任务时,第一步是选择一个求解器。由于求解器通常用于解决特定的问题,因此做出正确的选择是至关重要的。
二次规划(QP)求解器常用于求解具有线性约束的二次目标函数。公式由
在哪里<年代pan class="inlineequation"> 而且<年代pan class="inlineequation"> 分别是指定不等式约束和不等式约束的矩阵;<年代pan class="inlineequation"> 而且<年代pan class="inlineequation"> 是分别指定不等式和不等式约束的期望边界的向量;而且<年代pan class="inlineequation"> 而且<年代pan class="inlineequation"> 中元素的下界和上界<年代pan class="inlineequation"> ,分别。
乍一看,二次规划的问题公式似乎与LCM波束形成完美匹配,因为我们知道波束模式可以写成<年代pan class="inlineequation"> .不幸的是,这是不正确的,因为虽然光束模式是线性的,在复域,它不是这样的实域。另一方面,大多数优化求解器,包括二次规划,都在实域中工作,因为在复域中解空间变得非常复杂。此外,不等式在复域中也没有很好的定义。因此,问题是LCMV波束形成问题是否可以表述为实域并且仍然得到二次规划形式。
从目标函数开始<年代pan class="inlineequation"> .请注意,<年代pan class="inlineequation"> 在这种情况下是协方差矩阵吗<年代pan class="inlineequation"> 是真实的。因此,我们的目标是最小化的实部<年代pan class="inlineequation"> ,可写成以下形式:
在哪里<年代pan class="inlineequation"> 而且<年代pan class="inlineequation"> .
接下来,看看约束条件。LCMV波束形成中的约束是等式,这使得转换更容易一些,因为一个复杂的线性等式约束可以被分为两个对应的实线性等式约束,一个用于实部分,另一个用于虚部分。例如,下面的约束
可以改写为
利用这些关系,二次规划可以得到LCMV波束形成权值。
目标函数H = [real(Rn) -imag(Rn);imag(Rn) real(Rn)];F = [];<年代pan style="color:#228B22">%等式约束Aeq = [real(sv_c)。图像放大(sv_c)。”;图像放大(sv_c)。“地(sv_c)。”);Beq = [real(r_c);imag(r_c)];<年代pan style="color:#228B22">计算权重x_opt = quadprog(H,f,[],[],Aeq,beq);
最小值满足约束条件。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。
w_opt = x_opt(1:元素个数(x_opt) / 2) + x_opt(元素个数(x_opt) / 2 + 1:结束)* 1我;持有<年代pan style="color:#A020F0">在PLCMVQ = plot(ang_plot,mag2db(abs(w_opt'*sv_plot))),<年代pan style="color:#A020F0">”——“);持有<年代pan style="color:#A020F0">从传奇([plcmv plcmvq]、[<年代pan style="color:#A020F0">LCMV -拉格朗日“lcmv - qp”])
从图中可以看出,QP技术可以获得相同的LCMV波束形成权值。
基于二次规划的最小方差波束形成
模式合成的另一个常见需求是确保响应低于一组给定角度的某个阈值。这些是不等式要求,整体优化问题就变成了
在哪里<年代pan class="inlineequation"> 是<年代pan class="inlineequation"> 旁瓣电平应小于阈值的角度<年代pan class="inlineequation"> .有<年代pan class="inlineequation"> 总的不平等要求。
作为示例,在我们的示例问题中添加以下需求:
副瓣应在方位角-30和-10度之间低于-40分贝。
在主瓣外的任何地方,副瓣应低于- 20db。
这段代码绘制所需模式的掩码,并返回不等式约束:
(rc、angc sv_cineq、r_ineq ang_ineq] = generatePatternMask (pos、r_c [ang_d ang_i]);PDP = plot(angc,rc,<年代pan style="color:#A020F0">“k——”);Ylim([-100 0])网格<年代pan style="color:#A020F0">在包含(<年代pan style="color:#A020F0">方位角(度)) ylabel (<年代pan style="color:#A020F0">“光束图(dB)”)
随着新的不等式约束的引入,问题不再有一个封闭形式的解。此外,由于规范操作的存在,前面提到的将复杂约束转换为真实域的技巧不再有效。因此,需要一种新的方法来转换复杂不等式,以使用QP求解器来解决这组约束,
给定一个约束条件<年代pan class="inlineequation"> ,一种可能的转换方法是假设实部和虚部对范数的贡献相等。在这种情况下,单个复杂不等式约束可以被分为两个实不等式
或
约束的实部和虚部可以按前一节所述提取。因此,下面的代码设置约束并解决模式合成任务。
将复杂不等式约束映射到真实约束。Sv_c_real = [real(sv_cineq)。图像放大(sv_cineq)。”);Sv_c_imag = [imag(sv_cineq).]“地(sv_cineq)。”);A_ineq = [sv_c_real;sv_c_imag];A_ineq = [A_ineq;-A_ineq];B_ineq = [r_ineq;r_ineq]/√(2);B_ineq = [B_ineq; B_ineq];<年代pan style="color:#228B22">计算权重x_opt = quadprog(H,f,A_ineq,b_ineq,Aeq,beq);
最小值满足约束条件。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。
从实部和虚部重新组合复杂的权重。w_opt = x_opt(1:元素个数(x_opt) / 2) + x_opt(元素个数(x_opt) / 2 + 1:结束)* 1我;持有<年代pan style="color:#A020F0">在PQP = plot(ang_plot,mag2db(abs(w_opt'*sv_plot))));持有<年代pan style="color:#A020F0">从传奇(药品资格预审规划,<年代pan style="color:#A020F0">“模式- QP”)
得到的模式满足需求。
最小方差波束形成的二阶锥规划
尽管QP求解器成功地解决了最小方差波束形成问题,但不等式约束从复数到实数的转换并不理想。例如,没有理由说实部和虚部总是对规范有同等的贡献。然而,在QP问题设置中,确实没有简单的方法用规范处理约束。
幸运的是,在这种情况下可以使用另一种优化求解器,称为二阶锥编程(SOCP)。SOCP的开发是为了有效地解决以下优化问题:
在哪里<年代pan class="inlineequation"> 是一个矩阵,<年代pan class="inlineequation"> 而且<年代pan class="inlineequation"> 是向量,并且<年代pan class="inlineequation"> 是标量。<年代pan class="inlineequation"> ,<年代pan class="inlineequation"> ,<年代pan class="inlineequation"> ,<年代pan class="inlineequation"> 一起定义一个二阶锥约束,这是指定规范约束的自然选择。该求解器可以同时处理多个二阶锥约束。
与QP的问题公式相比,SOCP不仅可以处理二阶约束,而且可以处理QP中指定的所有约束。然而,目标函数是完全不同的。SOCP不是最小化方差,而是最小化优化变量的线性函数,<年代pan class="inlineequation"> .幸运的是,有一种方法可以转换最小方差目标函数以适应这个SOCP框架。诀窍在于定义一个辅助变量,<年代pan class="inlineequation"> ,并确保方差以<年代pan class="inlineequation"> .这样,问题就变成了最小化<年代pan class="inlineequation"> 而原来的二次型目标变成了以<年代pan class="inlineequation"> .
遵循这一思想,修正<年代pan class="inlineequation"> 直到底部<年代pan class="inlineequation"> .优化搜索空间由<年代pan class="inlineequation"> .因为目标是最小化<年代pan class="inlineequation"> ,<年代pan class="inlineequation"> 定义为<年代pan class="inlineequation"> .
f = [0 (2*N,1);1];
接下来,探讨如何将二次约束转换为二阶锥约束。因为我们的想法是把方差约束为
这相当于说
因此,
第二个锥约束变成
锥约束定义为||A_c*u-b_c||<=d_c^T*u-gamma_cAc = [sqrtm(H) 0 (2*N,1); 0 (1,2*N) 1];bc = 0 (2*N+1,1);dc = [0 (2*N,1);1];Gammac = -1/2;M = numel(r_ineq);socConstraints(M+1) = secondordercone(Ac,bc,dc,gammac);
剩下的第二个锥约束来自原始的不等式约束,转换起来相当简单。每个不等式的约束形式为
可以写成二阶锥约束
为m = 1: m Ac = [A_ineq ((m m + m):) 0(2,1); 0(1、2 * N) 0];BC = 0 (3,1);dc = 0 (2*N+1,1);Gammac = -r_ineq(m);socConstraints(m) = secondordercone(Ac,bc,dc,gammac);<年代pan style="color:#0000FF">结束
等式约束也需要扩充以容纳辅助变量,<年代pan class="inlineequation"> .
% patch Aeq和beqAeqc = [Aeq 0(大小(Aeq, 1), 1), 0(1、2 * N) 0];Beqc = [beq;0];
现在可以使用SOCP求解器计算数组权重。由于不等式约束更自然地表示在圆锥约束中,天真的人会期望在这个例子中,SOCP的结果模式将比QP的模式更好。
[u_op,feval,exitflag] = coneprog(f,socConstraints,[],[],Aeqc,beqc);
找到最优解。
从实部和虚部重新组合复杂的权重。优化向量的最后一项对应于变量tw_op = u_op(1:N)+u_op(N+1:2*N)*1i;持有<年代pan style="color:#A020F0">在Psocp = plot(ang_plot,mag2db(abs(w_op'*sv_plot))));持有<年代pan style="color:#A020F0">从传奇([药品资格预审规划psocp]、[<年代pan style="color:#A020F0">“模式- QP”模式- SOCP])
实际上,该图表明,与使用QP获得的模式相比,通过SOCP获得的模式具有更好的旁瓣抑制。正如您所看到的,当使用优化求解器时,这个过程相当复杂。我们可以通过调用minvarweights函数来简化这个过程。下面的代码显示如何将掩码约束定义为<年代pan class="emphasis">minvarweights函数。掩码旁瓣电平和掩码角表示优化问题的不等式约束,零角表示SOCP问题的等式约束。有关详细信息,请参阅minvarweights
文档。
W_opt = minvarweights(pos,ang_d,Rn,<年代pan style="color:#0000FF">...MaskSidelobeLevel = mag2db (r_ineq)”,<年代pan style="color:#0000FF">...MaskAngle = ang_ineq NullAngle = ang_i);情节(ang_plot mag2db (abs (W_opt * sv_plot)))<年代pan style="color:#A020F0">在情节(angc rc,<年代pan style="color:#A020F0">“k——”)举行<年代pan style="color:#A020F0">从传奇([<年代pan style="color:#A020F0">“模式-微小权重”“旁瓣面具”],<年代pan style="color:#0000FF">...位置=<年代pan style="color:#A020F0">“最佳”) ylim([-100 0]<年代pan style="color:#A020F0">在包含(<年代pan style="color:#A020F0">方位角(度)) ylabel (<年代pan style="color:#A020F0">“光束图(dB)”)
使用最小方差波束形成minvarweights
带有其他掩码约束
在本节中,我们使用minvarweights函数来解决具有不同优化约束的模式综合问题。考虑一个有55个天线单元和0.5个天线单元的线性阵列<年代pan class="emphasis">λ将ULA在方位角25度方向上进行间距。目标是在以下约束条件下优化波束形成权值:
在第一SLL到±90度方位角范围内,小于锥形旁瓣掩模的旁瓣电平从−18dB线性下降到−55dB。
在[−45−35 40 60]度的方位角上转向空点。
N = 55;<年代pan style="color:#228B22">元素数量%pos = (0:N-1)*0.5;<年代pan style="color:#228B22">元素位置%ANGmainBeam = 25;<年代pan style="color:#228B22">%主梁方向定义空方向ANGn = [-35 -45 40 60];<年代pan style="color:#228B22">%零角,度定义SLL掩码ANGml = -90:.2:22.5;<年代pan style="color:#228B22">%左sll的掩模角度SLLml = linspace(-55,-18,numel(ANGml));<年代pan style="color:#228B22">%掩码sll for ANGml(从−18dB线性下降到−55dB)ANGmr = 27.5:0.2:90;<年代pan style="color:#228B22">%掩码角为右SLLsSLLmr = linspace(-18,-55,numel(ANGmr));<年代pan style="color:#228B22">ANGmr的掩码sll百分比(从−18dB线性下降到−55dB)ANGm = [ANGml ANGmr];<年代pan style="color:#228B22">掩模角SLLm = [SLLml SLLmr];<年代pan style="color:#228B22">%掩码SLL计算优化的权重OptimizedWeights = minvarweights(pos, ANGmainBeam,<年代pan style="color:#0000FF">...MaskAngle = ANGm MaskSidelobeLevel = SLLm NullAngle = ANGn);<年代pan style="color:#228B22">计算数组图案Sv_plot = steervec(pos,-90:.25:90);Pattern = OptimizedWeights'*sv_plot;<年代pan style="color:#228B22">绘制图案情节(-90:.25:90 mag2db (abs(模式)))包含(<年代pan style="color:#A020F0">方位角(度)) ylabel (<年代pan style="color:#A020F0">“光束图(dB)”)轴([-90 90 -80 0]<年代pan style="color:#A020F0">在用空绘制掩码持有<年代pan style="color:#A020F0">在[AngMask,IA] = sort([ANGm ANGn]);SLLmask = [SLLm -1000*ones(1,size(ANGn,2))];情节(AngMask SLLmask (IA),<年代pan style="color:#A020F0">“k”)传说([<年代pan style="color:#A020F0">“模式-微小权重”“旁瓣面具”],<年代pan style="color:#0000FF">...位置=<年代pan style="color:#A020F0">“最佳”)举行<年代pan style="color:#A020F0">从
该动画显示了光束从−35度到+35度扫描的模式合成结果,并且在第一个SLL到±90度的方位角范围内,SLL从−18 dB线性下降到−55 dB。
总结
这个例子展示了如何使用优化技术来执行模式综合。该示例从熟悉的LCMV问题开始,并扩展所需的模式以包含不等式约束。与封闭形式的解决方案相比,优化技术更加灵活,可以应用于解决更复杂的约束。该示例还展示了如何使用二次规划、二阶锥规划或小权重来处理不等式约束。
参考
[1] Lebret, Hervé,还有Stephen Boyd。基于凸优化的天线阵列模式综合。<年代pan class="emphasis">IEEE信号处理汇刊,第45卷第3期(1997年3月),第526-532页。
函数[rcplot, angc svcineq、rineq angineq] = generatePatternMask (pos、rcexist angexist)<年代pan style="color:#228B22">生成模式合成的掩码Ang_c1 = [-30:-21 -19:-10];Ang_c2 = [-90:-71 -69:-41 -39:-31 -9:-5 5:90];<年代pan style="color:#228B22">注意主梁在-10到10度之间Sv_c1 = steervec(pos,ang_c1);Sv_c2 = steervec(pos,ang_c2);R1 = db2mag(-40)*ones(size(sv_c1,2),1);R2 = db2mag(-20)*ones(size(sv_c2,2),1);[angc,cidx] = sort([ang_c1 ang_c2 angexist]);Rc = [r1;r2;rcexist];Rcplot = mag2db(rc(cidx));Rcplot (Rcplot <-100) = -100;<年代pan style="color:#228B22">%不等式约束Sv_c1 = steervec(pos,ang_c1);Sv_c2 = steervec(pos,ang_c2);Svcineq = [sv_c1 sv_c2];Rineq = [r1;r2];Angineq = [ang_c1 ang_c2];<年代pan style="color:#0000FF">结束