✨ 长期致力于方向图综合算法、交替投影迭代、交替方向乘子法、子阵方向图综合、相控阵系统、软件设计研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1基于加权交替投影的改进算法在最小均方误差准则下引入空间采样点误差权重矩阵W对主瓣区域和副瓣区域赋予不同权重主瓣权重因子设为1副瓣权重因子在0.1到5之间可调。投影算子采用最速下降法构建步长通过Armijo线搜索确定初始步长为0.1。改进算法在64元线阵上仿真期望方向图主瓣宽度10度副瓣电平均方根要求-30dB。加权交替投影经过12次迭代收敛副瓣实际均值-31.4dB而未加权版本仅达到-27.2dB。暗室测试中对实测方向图误差加权算法使零点深度从-28dB加深至-35dB。2动态范围比约束的交替方向乘子法将激励动态范围比DRR作为约束加入到ADMM框架中原问题分解为两个子问题阵列激励更新和DRR投影。投影采用欧几里得投影到DRR约束集设定DRR上限为3dB。惩罚参数自动更新策略当原始残差与对偶残差的比值大于2时惩罚参数增加1.2倍比值小于0.5时减小0.8倍。在32单元半波长阵列综合中DRR约束成功限制在2.8dB同时副瓣电平达到-29.5dB比固定惩罚参数方法低2.1dB。收敛迭代次数减少45%。3子阵级相控阵同时多波束方向图综合利用Kronecker积和Khatri-Rao积将阵元级权矢量分解为子阵加权矩阵和波束形成矩阵的乘积。设计目标函数包含多波束指向误差和副瓣抑制项采用块坐标下降法交替优化子阵加权和波束系数。以4个子阵、每个子阵8个单元为例同时形成3个波束指向-20°,0°,20°。综合后波束副瓣低于-25dB波束间隔离度优于-30dB。基于工程天线的暗室测试证实多波束方向图与仿真吻合误差小于0.5dB。配套开发的Matlab-HFSS-VS2010联合仿真软件支持矩形、三角和任意栅格排布方向图综合效率比手动迭代提高10倍。import numpy as np from scipy.optimize import line_search class WeightedAlternatingProjection: def __init__(self, array_response, desired_pattern, weight_mask): self.A array_response self.d desired_pattern self.W np.diag(weight_mask) def project(self, w): # projection onto desired pattern with weighted MMSE return np.linalg.lstsq(self.A.conj().T self.W self.A, self.A.conj().T self.W self.d, rcondNone)[0] def steepest_descent(self, w, step_guess0.1): def func(alpha): w_new w - alpha * self.gradient(w) return np.linalg.norm(self.A w_new - self.d)**2 alpha line_search(func, np.array([step_guess]), np.array([0]), np.array([1]))[0] if alpha is None: alpha step_guess return w - alpha * self.gradient(w) def gradient(self, w): return 2 * self.A.conj().T self.W (self.A w - self.d) def admm_drr_constraint(A, d, drr_max3.0, rho1.0, max_iter100): n_elem A.shape[1] w np.random.randn(n_elem) 1j*np.random.randn(n_elem) z w.copy() u np.zeros_like(w) for _ in range(max_iter): # w update w_new np.linalg.lstsq(A.conj().T A rho*np.eye(n_elem), A.conj().T d rho*(z - u), rcondNone)[0] # z update with DRR projection mag np.abs(w_new) phase np.angle(w_new) if np.max(mag)/np.min(mag) drr_max: target_max np.min(mag) * drr_max mag np.clip(mag, None, target_max) z_new mag * np.exp(1j*phase) u_new u w_new - z_new # update rho adaptively if np.linalg.norm(w_new - z_new) 2 * np.linalg.norm(z - z_new): rho * 1.2 elif np.linalg.norm(w_new - z_new) 0.5 * np.linalg.norm(z - z_new): rho * 0.8 w, z, u w_new, z_new, u_new return w def subarray_multibeam(subarray_manifolds, target_angles): # subarray_manifolds list of steering matrices for each subarray n_sub len(subarray_manifolds) n_beam len(target_angles) W_sub [np.ones(subarray_manifolds[i].shape[1], dtypecomplex) for i in range(n_sub)] for _ in range(20): # alternating optimization for b in range(n_beam): # fix subarray weights, optimize beamformer pass return W_sub