6DMA可移动天线布局优化:基于CRB的建模与MATLAB实现
2026/9/6 14:34:50 网站建设 项目流程

简介:面向无线通信、信号处理与优化算法研究者的PDF资料,系统阐述六维可移动天线在无线感知中的建模、优化与性能评估,重点解决如何通过调整天线位置与旋转来提升角度估计精度。资料以最小化克拉美罗下界为优化目标,对三个位置分量和三个旋转分量进行联合设计,并与传统固定天线方案对比。内容涵盖系统模型、导向矢量计算、克拉美罗下界推导、SLSQP等优化算法选型、仿真实验与结果可视化,并配套可运行Python代码,含类定义、矩阵装配和参数扫描模块,便于复现和调参。资源为单个PDF文件,大小约1000KB,适合有一定编程基础的无线通信、信号处理和优化技术研发人员。已有109人学习下载,理论推导、代码实现与对比实验结构清晰,既可作为入门资料,也为复杂辐射模型、通感融合及动态场景优化等后续研究提供参考。 做无线感知方向的同学,这两年对“可移动天线”这个概念应该不陌生了。传统多天线系统出厂之后,阵元位置和朝向就完全固定,阵列响应只能靠改变波束权值来调整。而六维可移动天线(6DMA)把自由度彻底放开,每个阵元既能在三维空间里平移,又能绕三个轴独立旋转,配合无线感知任务里的克拉美-罗下界(CRB)准则来设计天线布局,能够把角度估计精度推到物理极限附近。这篇文章就是完整拆解这个优化系统的思路、建模、算法,以及一套可以直接拿去改的MATLAB代码,适合正在做智能超表面、通感一体化、阵列信号处理方向的学生和工程师参考。

为什么要在这个方向上花力气,核心逻辑很简单:感知精度取决于阵列对目标方向的分辨能力,而阵列的分辨能力由阵元位置决定的相位差和阵元朝向决定的增益方向图共同决定。固定阵列只能通过数字权值做波束扫描,等效口径没法变;6DMA却能通过物理移动和旋转,让阵列响应在目标方向附近的Fisher信息最大化,也就是直接降低CRB。这篇文章不会只讲理论,后面会给出可运行代码,每一步都有详细注释。

1. 为什么6DMA值得做:从固定阵列到六维自由度的思路转变

1.1 位置改变相位、旋转改变增益:6DMA的物理直觉

先建立一个直觉。一个阵列接收远场平面波的时候,不同阵元之间的相位差是由空间位置差决定的,这部分本质上是阵列的几何孔径在起作用。阵列孔径越大,波束越窄,角度分辨力越强,这点做DOA估计的人都很熟悉。但位置之外还有一个常被忽略的维度,也就是阵元本身的朝向。实际天线单元的方向图并不是全向的,偶极子、贴片、喇叭天线都有主瓣方向和前后比。如果阵元朝向恰好对着感兴趣的目标方向,接收增益就高;反过来,信号从天线背面来,哪怕阵列孔径再大,信噪比也会掉得一塌糊涂。

6DMA的“六维”就是3个位置自由度加上3个旋转自由度。位置自由度决定阵列的相位配置,旋转自由度决定每个阵元的增益配置,两者共同影响最终的信噪比和角度信息量。固定阵列只能优化数字权值,相当于在一个已经铸好的模具里做调整;6DMA相当于连模具都可以重铸。实际系统里,天线可以通过微型电机或MEMS驱动调整位置和角度,代价是硬件复杂度上升,但换来的是感知性能的显著提升。

1.2 用CRB量化感知极限,作为设计的优化目标

那么问题来了,有了可移动和可旋转的能力,怎么判断哪组位置和姿态最好?直观想法是跑一遍最大似然估计,看均方误差最小。但均方误差是随机量,而且和具体估计算法强相关,拿来做优化目标既不光滑也不够通用。

CRB这时候就体现出价值。对于任意无偏估计器,估计方差有一个理论下界,这个下界由接收信号模型和信噪比决定,和具体算法无关。在信号模型正确、噪声是高斯白噪声的前提下,最大似然估计在高信噪比下能逼近CRB。所以在系统设计阶段,直接优化CRB就相当于优化系统能达到的精度天花板,后期算法只要不做得太差,实际性能就会跟着走。这个逻辑在雷达感知、通信感知一体化里已经是被广泛接受的通用方法论。

整个优化问题的数学形式就是:给定目标方向,在所有阵元位置边界、最小间距约束、旋转角度边界下,寻找使角度估计CRB最小的位置矩阵和旋转矩阵。注意这里CRB矩阵通常是二维的,对应方位角和仰角两个待估参数,目标函数可以取CRB矩阵的迹或者某个加权组合。这本质上是一个高维非凸优化问题,需要精心设计算法才能避免陷入糟糕的局部最优。

2. 系统建模:如何把位置、旋转和CRB写成数学表达式

2.1 天线单元方向图与旋转矩阵建模

先对天线单元的朝向做一个数学化处理。假设初始状态下每个天线的主瓣方向沿着z轴正方向,阵元本身带有旋转能力后,主瓣方向会随着旋转矩阵变化。旋转矩阵用欧拉角表示,按Z-Y-X顺序依次旋转roll角、pitch角和yaw角,最终得到3乘3的旋转矩阵,作用在初始主轴矢量上就得到当前主轴方向。

天线方向图模型我采用经典的余弦型方向图,也就是增益g等于cosine夹角的方向图指数次方。方向图指数gamma_pat越大,波束越窄,方向性越强;gamma_pat为0时就是全向天线,旋转就起不到任何作用。这个模型的好处是解析可导,CRB推导和梯度计算都非常方便。在实际工程里,贴片天线或喇叭天线的方向图更复杂,但用实测方向图替换余弦模型也不难,只需要把方向图函数换成查找表并做插值就行。

位置方面,每个阵元的三维坐标为p_m,所有阵元位置组成3乘M的位置矩阵。由于阵列内部阵元不能无限靠近,需要加最小间距约束,通常设为半个波长或一个波长,避免互耦效应过强导致方向图失真。

2.2 导向矢量与阵列响应模型

对于一个远场窄带目标源,设它的方位角为theta、仰角为phi,则目标方向单位向量u是一个只由这两个角度决定的三维向量。第m个阵元相对于坐标原点的延迟会产生一个相位项,相位大小正比于波数乘以方向向量和位置向量的内积。这是阵列信号处理里最基础的平面波假设,也是后面FIM推导的出发点。

与此同时,每个阵元的增益g_m由主轴方向和目标方向的夹角决定。结合相位项就能写出完整的导向矢量第m个元素:增益乘以复指数。整个导向矢量是M维复数向量,它包含了位置信息、旋转信息、目标角度信息。如果目标方向正好落在某个阵元主瓣方向附近,该阵元贡献的增益就大,在CRB中权重也相应提高。

这个模型需要特别说明一点:这里考虑的是窄带远场场景,信号带宽相对于载频很小,目标距离远大于阵列口径。如果切换到近场场景,相位项还要加入距离相关的二次项;如果是宽带信号,需要按频点分别建模。但本篇所有核心思想都可以平移到那些更复杂的情况,只是公式和代码会更长。

2.3 基于FIM的CRB推导完整过程

Fisher信息矩阵(FIM)是连接测量模型和估计误差的桥梁。在高斯白噪声假设下,FIM的第i行第j列元素等于2倍信噪比乘以两个输出信号偏导向量的内积再取实部。这里的“输出信号”是导向矢量与目标信号幅度的乘积,偏导则是对待估参数求导。当待估参数只有方位角和仰角两个时,FIM就是2乘2矩阵。

求导的过程可以把复数求导拆成两部分:增益部分求导和相位部分求导。增益对角度求导来自方向图函数的链式法则,相位对角度求导来自单位方向向量对角度偏导与位置的内积。把每项的实部和虚部都处理正确,最后组装成2乘2的FIM,对FIM求逆取对角线就是方位角和仰角各自的CRB。我取CRB矩阵的迹作为标量目标函数,对应两个角度估计方差的下界之和。

这段推导里有几个细节值得注意。第一,如果待估参数里包含复数路径增益,FIM维度要扩展到4乘4,角度CRB是子矩阵的元素,代码需要相应修改。第二,当FIM接近奇异时,CRB会变得非常大,在数值上要设置保护,否则优化目标函数会出现突变。第三,SNR必须用线性值而非dB值,这个低级错误我在初版代码里踩过,跑出来的CRB曲线完全对不上理论值。

3. 联合优化算法:把复杂问题拆成两个可控的子问题

3.1 交替优化框架:固定旋转优化位置,固定位置优化旋转

直接同时优化位置和旋转变量,等于在一个6乘M维的空间里搜索,非凸性极强,几乎不可能稳定求解。我的做法是交替优化。一轮迭代里,先固定所有旋转变量,只优化位置变量,得到一个更优的位置配置;再固定这个位置配置,只优化旋转变量,得到更优的姿态配置。如此反复迭代,直到目标函数收敛或者达到预设的轮数。

为什么这种交替的方式能work?因为位置变量和旋转变量在导向矢量里虽然存在耦合,但在梯度方向上有明显的分工:位置主要通过相位项影响CRB,旋转主要通过增益方向图影响CRB。固定一类变量时,另一类变量的子问题目标函数相对平滑,更容易找到局部最优。交替优化不保证收敛到全局最优,但实测下来只要初值合理、迭代轮数足够,性能就能超过均匀线阵和随机旋转阵一大截。

在迭代轮数设置上,我不建议设太多轮。通常10到15轮交替足够让CRB曲线进入平台期,继续迭代收益很低,反而增加计算时间。如果计算资源紧张,也可以设置早停条件,比如相邻两轮CRB相对变化小于1e-3就终止。

3.2 为什么用粒子群而不是梯度下降

子问题虽然比原始问题好解,但依然是非凸的。位置变量存在最小间距约束,可行域有空洞;旋转变量存在周期性,目标函数关于角度呈多峰。直接用fminunc或者adam这类梯度方法,很容易陷入浅层局部最优,而且处理间距约束很麻烦。

粒子群算法在中等维度非凸问题上表现很稳,它不需要梯度信息,天然支持边界约束,而且实现简单、对目标函数的数值波动不敏感。我在每个子问题里都调用MATLAB的particleswarm函数,它属于Global Optimization Toolbox,内置了自适应惯性权重和速度裁剪,基本上只需要提供目标函数句柄和边界就能跑。如果读者的环境没有这个工具箱,也可以换成CMA-ES或者贝叶斯优化,整体框架不用动。

粒子群有一个缺点是收敛速度慢,尤其是在24维或48维的问题上。为了控制总耗时,位置子问题的粒子数设100、最大迭代设150,旋转子问题的粒子数设60、最大迭代设100。这个配置在大约8个阵元时,单轮交替几十秒内能跑完,算是精度和速度比较均衡的选择。

3.3 参数设置与约束处理

约束处理的核心思路是罚函数法。最小间距本来是不等式约束,直接丢给粒子群会让大量粒子落在不可行区域,导致搜索效率很低。我的做法是在目标函数里加一个罚项,当任意两个阵元距离小于最小间距时,罚项等于距离偏差的平方乘以一个大权重;距离满足约束时罚项为0。这样即使在搜索过程中出现违反约束的粒子,也会因为代价被抬高而逐渐被淘汰。

罚权重不能设得过大,否则CRB的数值量级会被完全淹没,粒子群只关注减少罚项而忽略真正要优化的感知精度;也不能设得过小,否则最终结果可能保留违反间距约束的构型。我通常把罚权重设为CRB初始值的10倍量级,并且随着迭代轮数增加适当提高,类似模拟退火的思路。

旋转角度边界约束用粒子群自带的上下界设置就好。需要提醒的是,欧拉角存在周期性和万向锁问题,当旋转接近90度时,旋转矩阵对某个轴的导数会退化。所以在建模时就把每个轴的角度范围限制在正负45度以内,既符合实际机械装置的转动能力,也避免万向锁带来的数值麻烦。

4. 完整MATLAB代码与逐段精讲

4.1 主函数:参数初始化与交替优化循环

代码入口是一个主脚本,负责设置所有系统参数、生成初始阵列配置、执行交替优化并记录每轮的CRB值。仿真场景设定在28GHz毫米波频段,这个频段在ISAC系统里很常见,波长只有大约1厘米,天线阵列尺寸可以控制得很小。

% main_6dma.m clear; clc; close all; % ---- 系统与优化参数 ---- params.fc = 28e9; % 载频 28 GHz params.c = 3e8; params.lambda = params.c / params.fc; params.snr_db = 10; % 接收信噪比,单位 dB params.gamma_pat = 1; % 天线方向图指数,0为全向,1为余弦 params.M = 8; % 阵元数量 params.d_min = 0.5 * params.lambda; % 最小阵元间距 % 感知目标方向 params.theta = 30 * pi/180; % 方位角 30° params.phi = 10 * pi/180; % 仰角 10° % 位置边界:边长4个波长的立方体区域 params.pos_lb = -2 * params.lambda * ones(3, params.M); params.pos_ub = 2 * params.lambda * ones(3, params.M); % 旋转边界:每个轴旋转范围 ±30° params.rot_lb = -pi/6 * ones(3, params.M); params.rot_ub = pi/6 * ones(3, params.M); % ---- 初始阵列:均匀半波长线阵 ---- P0 = zeros(3, params.M); for m = 1:params.M P0(:, m) = [(m-1) * params.lambda / 2; 0; 0]; end Q0 = zeros(3, params.M); % 初始姿态全部朝向+z方向 % ---- 交替优化 ---- max_alt_iter = 12; crb_history = zeros(1, max_alt_iter); P_cur = P0; Q_cur = Q0; for iter = 1:max_alt_iter % 子问题1:固定旋转,优化位置 lossP = @(x) objective_position_pso(x, Q_cur, params); [x_opt, ~] = particleswarm(lossP, 3*params.M, ... params.pos_lb(:), params.pos_ub(:)); P_cur = reshape(x_opt, 3, params.M); % 子问题2:固定位置,优化旋转 lossQ = @(x) objective_rotation_pso(x, P_cur, params); [x_opt, ~] = particleswarm(lossQ, 3*params.M, ... params.rot_lb(:), params.rot_ub(:)); Q_cur = reshape(x_opt, 3, params.M); crb_history(iter) = compute_crb(P_cur, Q_cur, params.theta, params.phi, params); fprintf('Alternating iter %d: CRB = %.4f\n', iter, crb_history(iter)); end

这段代码的核心循环很直观。需要注意的是particleswarm的输入输出都是列向量,所以每次优化完必须用reshape恢复成3乘M矩阵。粒子群是一种随机算法,每次运行结果会有一定波动,这是正常现象。想要复现稳定结果可以在主脚本开头加rng(固定种子),我常用rng(2024)来保证实验可复现。

4.2 CRB计算模块:从导函数到Fisher信息矩阵

compute_crb函数是整个系统评估的中枢。它接收当前的位置矩阵、旋转矩阵、目标角度和参数结构体,返回CRB矩阵的迹。这个函数同时也是粒子群目标函数的底层计算单元,所以性能要求比较高,循环里尽量不要做重复计算,能用矩阵运算的地方就批量算。

function crb = compute_crb(P, Q, theta, phi, params) % P: 3 x M,天线位置(米) % Q: 3 x M,欧拉角 [alpha; beta; gamma],单位rad % theta, phi: 目标方位角、仰角,单位rad M = size(P, 2); k0 = 2 * pi / params.lambda; snr = db2pow(params.snr_db); % 目标方向单位向量及其偏导 u = [cos(phi)*cos(theta); cos(phi)*sin(theta); sin(phi)]; du_dtheta = [-cos(phi)*sin(theta); cos(phi)*cos(theta); 0]; du_dphi = [-sin(phi)*cos(theta); -sin(phi)*sin(theta); cos(phi)]; a = zeros(M,1); da_dtheta = zeros(M,1); da_dphi = zeros(M,1); for m = 1:M Rm = euler2rotm(Q(1,m), Q(2,m), Q(3,m)); r_m = Rm * [0;0;1]; % 主轴方向 cosang = u' * r_m; % 方向图增益及导数 if cosang > 0 g = cosang^params.gamma_pat; dg_dtheta = params.gamma_pat * cosang^(params.gamma_pat-1) * (du_dtheta'*r_m); dg_dphi = params.gamma_pat * cosang^(params.gamma_pat-1) * (du_dphi'*r_m); else g = 0; dg_dtheta = 0; dg_dphi = 0; end phase = exp(1j * k0 * (u' * P(:,m))); phase_dtheta = 1j * k0 * (du_dtheta' * P(:,m)) * phase; phase_dphi = 1j * k0 * (du_dphi' * P(:,m)) * phase; a(m) = g * phase; da_dtheta(m) = dg_dtheta * phase + g * phase_dtheta; da_dphi(m) = dg_dphi * phase + g * phase_dphi; end % 2x2 Fisher信息矩阵 F = zeros(2,2); F(1,1) = 2 * snr * real(da_dtheta' * da_dtheta); F(1,2) = 2 * snr * real(da_dtheta' * da_dphi); F(2,1) = F(1,2); F(2,2) = 2 * snr * real(da_dphi' * da_dphi); if rcond(F) < 1e-12 crb = 1e10; % 数值保护,表示当前配置下CRB极大 else crb = trace(inv(F)); end end function R = euler2rotm(alpha, beta, gamma) % Z-Y-X欧拉角转旋转矩阵 Rx = [1 0 0; 0 cos(alpha) -sin(alpha); 0 sin(alpha) cos(alpha)]; Ry = [cos(beta) 0 sin(beta); 0 1 0; -sin(beta) 0 cos(beta)]; Rz = [cos(gamma) -sin(gamma) 0; sin(gamma) cos(gamma) 0; 0 0 1]; R = Rz * Ry * Rx; end

这段代码里有几个容易出错的地方。第一,方向图增益在cosang小于等于0时直接被置为0,对应天线背瓣没有增益,但导函数也要同步置0,否则数值上会出现突变。第二,rcond检查很重要,当阵列位置几乎完全重合或目标方向落在方向图零点时,FIM可能奇异,CRB会爆炸,这个保护能让优化器自动避开那些糟糕区域。第三,相位对角度求导时,需要把波数k0乘进去,漏掉k0的话,CRB的数值整体会偏大一个量级,我最初排查这个bug花了不少时间。

4.3 粒子群目标函数与罚函数实现

位置子问题和旋转子问题的目标函数需要分开写,因为位置子问题必须考虑最小间距约束,而旋转子问题不涉及阵元间距离。位置子问题的目标函数里,罚项的权重我设为CRB初始值的10倍左右,并且随交替轮数线性递增。

function cost = objective_position_pso(x, Q, params) M = params.M; P = reshape(x, 3, M); crb = compute_crb(P, Q, params.theta, params.phi, params); % 最小间距罚函数 penalty = 0; for i = 1:M for j = i+1:M d = norm(P(:,i) - P(:,j)); if d < params.d_min penalty = penalty + (d - params.d_min)^2; end end end % 罚权重随CRB量级自适应 w_pen = max(10 * crb, 1e4); cost = crb + w_pen * penalty; end function cost = objective_rotation_pso(x, P, params) M = params.M; Q = reshape(x, 3, M); cost = compute_crb(P, Q, params.theta, params.phi, params); end

位置子问题的罚函数用双层循环,复杂度是O(M^2)。阵元数比较多时可以改成用pdist2一次性算出距离矩阵,然后用tril提取下三角,效率会高很多。罚权重的自适应逻辑是为了避免不同SNR或不同方向图指数下CRB量级差异导致的罚项失衡。这里还有一个隐藏细节:当罚项为0时cost就是纯CRB,粒子群会在可行区域内正常优化;一旦某个粒子违反间距约束,罚项会瞬间把它推向可行域,所以绝大多数粒子最终都能满足间距条件。

4.4 仿真结果可视化:收敛曲线与阵列布局

优化跑完后,建议做两个基础可视化:CRB随交替轮次的收敛曲线,以及最终阵列的几何布局和主轴朝向。收敛曲线能帮助你判断交替优化是否已经进入稳态;阵列布局图则能直观看出粒子的位置是否合理、方向图有没有明显对齐目标方向。

% 画CRB收敛曲线 figure; plot(1:max_alt_iter, crb_history, 'o-', 'LineWidth', 2); xlabel('Alternative iteration'); ylabel('CRB trace'); title('6DMA CRB during alternating optimization'); grid on; % 画优化后的三维布局 figure; scatter3(P_cur(1,:)/params.lambda, P_cur(2,:)/params.lambda, ... P_cur(3,:)/params.lambda, 80, 'filled'); hold on; for m = 1:params.M r_m = euler2rotm(Q_cur(1,m), Q_cur(2,m), Q_cur(3,m)) * [0;0;1]; quiver3(P_cur(1,m)/params.lambda, P_cur(2,m)/params.lambda, ... P_cur(3,m)/params.lambda, r_m(1), r_m(2), r_m(3), 0.5, 'r'); end xlabel('x / \lambda'); ylabel('y / \lambda'); zlabel('z / \lambda'); axis equal; grid on; title('Optimized 6DMA layout');

实际跑出来的收敛曲线通常会有一个明显下降,第一轮到第三轮下降最快,之后进入缓慢调节阶段。经过6到8轮交替后,CRB比初始均匀线阵下降30%到50%是合理的,具体提升幅度取决于方向图指数和目标方向。如果目标方向正好在天线区的侧面,旋转优化带来的增益非常明显,因为阵元可以通过转动把主瓣对准目标,而不是靠数字权值硬凑。

5. 跑代码时最容易踩的坑与排查技巧

5.1 方向图指数设置不当,旋转优化形同虚设

第一次跑这套代码的时候,如果方向图指数gamma_pat设为0,也就是把天线当成全向单元,旋转矩阵再怎么优化都不影响导向矢量,因为所有方向的增益恒为1。这时候旋转子问题里所有粒子的目标函数值完全相同,粒子群完全退化成随机游走,优化结果自然没有任何意义。

解决办法是把gamma_pat至少设为1。当然也不是越大越好,方向图指数过大时,天线波束极窄,一旦某个阵元主轴方向没有精确对准目标,它对该方向的增益几乎为0,整个阵列就容易出现“一个阵元贡献大、其余阵元全废掉”的极端布局,导致CRB对角度扰动过于敏感,鲁棒性变差。我实测下来gamma_pat取1到2之间最合理,既能让旋转优化发挥明显作用,又不至于让阵列对方向误差过分敏感。

5.2 PSO找不到好解:重启、SwarmSize与边界裁剪

粒子群是随机算法,单次运行可能陷入较差的局部最优。尤其位置变量维数高达3乘8等于24维,非凸性很强,100个粒子并不能保证覆盖整个搜索空间。遇到这种情况,最直接的办法是设置多个随机初始种子,跑5到10次,取CRB最小的结果作为最终配置。

如果多次运行结果差异很大,说明问题本身对初值很敏感,可以考虑增大SwarmSize。把位置子问题的粒子数从100提高到300,搜索会明显更充分,代价是计算时间成倍增加。还可以在粒子群内部设置UseParallel为true,把目标函数评估并行化,多核机器上提速很明显。

另外,边界裁剪也要注意。particleswarm返回的粒子可能非常接近边界,甚至在边界上,如果此后还想做局部精细优化,可以用fmincon以粒子群结果作为初值再跑一轮,通常能进一步降低CRB。

5.3 最小间距约束导致罚函数震荡怎么办

罚函数法的隐患是罚权重不合适带来的震荡。如果罚权重太小,粒子群可能返回一个间距严重违规但CRB很低的布局,从数学上看CRB确实低因为阵元几乎堆在一起等效于大孔径,但这不符合物理可实现原则。如果罚权重太大,粒子群的主要优化压力全在避开约束,CRB的优化就被压制了。

我建议在罚函数里加入一个“违反约束的数量”的计数项,而不仅仅是距离偏差的平方。这样可以保证罚项不只惩罚偏离程度,也惩罚违规的阵元对数,让粒子群更倾向于寻找完全不违规的构型。另一个技巧是在每次交替优化结束后,对位置矩阵做一次简单修复,把距离过近的阵元强制拉开到最小间距,再重新计算CRB,这样即使优化过程中有小幅违规,最终输出也是物理可实现的。

5.4 从单个目标方向扩展到多目标感知

很多时候感知任务不会只盯住一个方向,而是要对多个目标或一个宽角度区域进行感知。单目标CRB在多目标场景下不再适用,需要考虑加权CRB和。

扩展方式并不复杂:在目标函数里,对K个目标方向分别计算CRB,然后取加权和。权重可以根据目标的优先级或信息重要性来设置,比如某个方向需要高精度跟踪,就给更高权重。位置和旋转的交替优化框架完全不用变,只需要把compute_crb的调用改成对K个方向循环累加即可。

另一个场景是目标方向本身不确定,只知道一个大致先验范围。这时可以把CRB目标换成对该范围内角度的积分CRB,或者对范围内若干采样点CRB取平均。这样优化出的阵列在天线区域内的整体感知能力更均衡,实用性更强。从算法实现角度来说,只是目标函数复杂了一点,粒子群本身的机制不受影响。

我个人的实测体会是,6DMA的优势在目标方向偏离阵列法线方向时最明显。均匀线阵在端射方向的CRB会急剧恶化,而6DMA通过把阵元位置重新排布、把朝向调整到目标方向,相当于把一个矩形天线罩里的资源全部集中到最有价值的方向上,CRB的下降幅度往往能让第一次跑的人吓一跳。如果你打算在这个方向上继续深入,下一步可以考虑把近场效应、极化维度、或者目标运动带来的多普勒信息加进CRB推导里,模型的复杂度会上升,但整套“建模-求FIM-优化配置”的思路是完全通用的。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询