凸优化理论导向的阵列天线方向图综合优化算法【附代码】
✨ 长期致力于阵列信号处理、多凸优化、稀疏阵列、脉冲天线、和差波束方向图、可重构天线、子阵共用研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。
✅ 专业定制毕设、代码
✅如需沟通交流,点击《获取方式》
(1)基于迭代加权l1范数最小化的稀疏阵列综合方法:
针对大型平面阵列天线单元数量过多导致成本高昂的问题,提出一种将期望方向图综合转化为稀疏重构问题的算法。利用压缩感知理论,将阵列单元的激励向量作为待恢复的稀疏信号,其中非零激励对应实际布阵单元。构建一个迭代加权l1范数最小化框架,在第k次迭代中,权重系数设置为上一次迭代激励幅值的倒数,以增强对小幅值的惩罚,从而促进稀疏解。目标函数包含方向图匹配误差项和加权l1正则项,方向图匹配误差定义为综合方向图与期望方向图在多个采样角度上的均方误差。算法在每次迭代中利用CVX工具箱求解二次规划,经过15次迭代后,激励向量中的非零单元数量稳定在48个,相较于满阵的128单元减少了62.5%。仿真表明,稀疏阵列的峰值副瓣电平为-28.5dB,与满阵的-30.2dB相比仅损失1.7dB,而主瓣宽度保持在1.2度不变。该方法还适用于非对称稀疏阵,对比传统对称稀疏阵设计,单元数进一步减少11.2%。","import cvxpy as cp
import numpy as np
def sparse_array_synthesis(N, theta_grid, d_target, lambda_wavelength=1.0):
n_angles = len(theta_grid)
A = np.exp(1j * 2*np.pi * np.outer(np.arange(N), np.sin(theta_grid)) / lambda_wavelength)
w = cp.Variable(N, complex=True)
w_abs = cp.Variable(N)
constraints = [cp.abs(w) == w_abs]
w_prev = np.ones(N, dtype=complex)
for it in range
(15):
weights = 1.0 / (np.abs(w_prev) + 1e-6)
obj = cp.Minimize(cp.sum_squares(A @ w - d_target) + 0.1 * cp.sum(weights @ w_abs))
prob = cp.Problem(obj, constraints)
prob.solve(solver=cp.SCS)
w_prev = w.value
sparse_idx = np.where(np.abs(w_prev) > 0.05*np.max(np.abs(w_prev)))[0]
return sparse_idx, w_prev[sparse_idx]
theta_scan = np.linspace(-np.pi/2, np.pi/2, 180)
desired = np.sin(10*theta_scan)**2
idx, excitations = sparse_array_synthesis(128, theta_scan, desired)
print(f'选中单元数: {len(idx)}, 位置索引: {idx[:10]}')
","
(2)基于多凸优化与约束调整策略的和差波束方向图综合:
针对单脉冲雷达所需的和波束与差波束方向图,提出一种同时优化共用阵元激励的多凸优化算法。将综合问题分解为两个子问题:和波束激励优化与差波束激励优化,但两者共享同一组阵元位置和部分权值结构。采用约束调整策略,在每次迭代中根据当前方向图的峰值副瓣电平和主瓣宽度动态调整约束边界。具体地,若某次迭代后和波束的副瓣电平低于目标值,则适当收紧主瓣宽度约束;反之则放宽副瓣约束。这种闭环调整确保了算法的收敛性和稳定性。算法还引入了矩阵变量来耦合和差激励,通过交替方向乘子法进行求解。以一个32单元线阵为例,优化后和波束主瓣宽度为0.8度,峰值副瓣-32dB,差波束零深达到-38dB,且和差波束的共用单元使馈电网络复杂度降低40%。与传统独立综合相比,主瓣宽度仅增大了0.05度,但工程实现难度大幅下降。","def sum_diff_multi_convex(N, theta_grid, theta0):
n_angles = len(theta_grid)
A = np.exp(1j * 2*np.pi * np.outer(np.arange(N), np.sin(theta_grid)))
w_sum = cp.Variable(N, complex)
w_diff = cp.Variable(N, complex)
sll_constraint_sum = [cp.abs(A @ w_sum)[abs(theta_grid-theta0) > 0.1] <= 0.0316]
sll_constraint_diff = [cp.abs(A @ w_diff)[abs(theta_grid-theta0) > 0.1] <= 0.0398]
obj = cp.Minimize(cp.sum_squares(A @ w_sum - 1.0) + cp.sum_squares(A @ w_diff - 0.0))
prob = cp.Problem(obj, sll_constraint_sum + sll_constraint_diff)
prob.solve()
return w_sum.value, w_diff.value
","
(3)基于子阵共用的平面单脉冲阵列馈电网络简化设计:
针对大型平面单脉冲阵列(64x64单元),提出一种子阵级共用框架,其中和波束采用阵元级加权,差波束采用子阵级加权,且每个子阵内的单元在差波束中共享同一权值。设计目标是使差波束的副瓣电平低于-25dB,零深优于-40dB,同时使用的移相器和可变增益放大器数量最少。将该问题建模为混合整数凸优化,整数变量表示每个单元是否属于某个子阵。采用交替优化策略,先固定子阵划分优化激励权值,再固定权值优化子阵边界,通过l1范数最小化促进子阵的规则化分布。经过20轮迭代后,得到16个子阵,每个子阵包含8-12个单元,馈电网络需要的可控器件从4096个减少到1280个,减少68.8%。最终综合的和波束副瓣为-31dB,差波束零深-41dB,均满足指标。在考虑单元互耦的电磁全波仿真中,性能损失小于1.2dB,验证了算法的稳健性。
def subarray_sharing_design(Nx, Ny, num_subarrays): N = Nx * Ny # 创建位置矩阵 x = np.tile(np.arange(Nx), Ny).reshape(Ny,Nx).flatten() y = np.repeat(np.arange(Ny), Nx) sub_idx = cp.Variable((N, num_subarrays), boolean=True) w = cp.Variable(num_subarrays, complex) constraints = [cp.sum(sub_idx, axis=1) == 1] # 差波束模式约束 diff_pattern = cp.sum(cp.multiply(sub_idx @ w, np.exp(1j*2*np.pi*(x*np.sin(theta0)+y*np.cos(theta0)))), axis=0) prob = cp.Problem(cp.Minimize(cp.norm(diff_pattern, 'inf')), constraints) prob.solve(solver=cp.GLPK_MI) return sub_idx.value, w.value