2. 机载相控阵波束控制基础

任务说明

本案例针对机载相控阵雷达的阵列天线,完成矩形栅格平面阵的单元布局定义与坐标计算。给定阵面行数M、列数N、单元间距dx与dy(单位:米),计算每个阵元在阵面坐标系中的三维坐标,并输出阵面几何中心、孔径尺寸及单元总数,为后续波束控制中的阵元级相位计算提供坐标基础。

坐标系定义

阵面坐标系原点位于阵列几何中心,X轴沿阵列行方向(水平),Y轴沿阵列列方向(垂直),Z轴为阵面法向。阵元位于Z=0平面内,第(m,n)个单元的坐标由下式给出:

x = (n - (N-1)/2) * dx
y = (m - (M-1)/2) * dy
z = 0

其中m=0,1,...,M-1为行索引,n=0,1,...,N-1为列索引。该定义保证阵列中心单元位于坐标原点附近,且当M、N为奇数时中心单元恰在原点。

代码实现


import numpy as np

def compute_array_coordinates(M, N, dx, dy):
    """
    计算矩形栅格平面阵的单元坐标
    
    参数:
        M: 行数(Y方向单元数)
        N: 列数(X方向单元数)
        dx: X方向单元间距(米)
        dy: Y方向单元间距(米)
    
    返回:
        coords: 形状为(M*N, 3)的numpy数组,每行为[x, y, z]
        center: 阵面几何中心坐标 [xc, yc, zc]
        aperture_size: 孔径尺寸 [Lx, Ly](米)
        total_elements: 单元总数
    """
    # 生成行、列索引网格
    m_idx = np.arange(M).reshape(M, 1)   # 行索引 0..M-1
    n_idx = np.arange(N).reshape(1, N)   # 列索引 0..N-1
    
    # 计算坐标(广播机制)
    x = (n_idx - (N - 1) / 2.0) * dx
    y = (m_idx - (M - 1) / 2.0) * dy
    z = np.zeros((M, N))
    
    # 展平为(N*M, 3)坐标列表,按行优先顺序
    coords = np.stack([x, y, z], axis=-1).reshape(-1, 3)
    
    # 阵面几何中心(应为原点)
    center = np.array([0.0, 0.0, 0.0])
    
    # 孔径尺寸
    Lx = N * dx
    Ly = M * dy
    
    total_elements = M * N
    
    return coords, center, np.array([Lx, Ly]), total_elements

# 示例:8行×12列,间距均为0.015m(典型X波段半波长间距)
M, N = 8, 12
dx, dy = 0.015, 0.015

coords, center, aperture, total = compute_array_coordinates(M, N, dx, dy)

print(f"单元总数: {total}")
print(f"孔径尺寸: {aperture[0]:.3f} m × {aperture[1]:.3f} m")
print(f"几何中心: ({center[0]}, {center[1]}, {center[2]})")
print("前5个单元坐标 (x, y, z) 单位米:")
for i in range(5):
    print(f"  单元{i}: ({coords[i][0]:+.4f}, {coords[i][1]:+.4f}, {coords[i][2]:.1f})")
print("最后1个单元坐标:")
print(f"  单元{total-1}: ({coords[-1][0]:+.4f}, {coords[-1][1]:+.4f}, {coords[-1][2]:.1f})")

关键实现说明

代码使用NumPy的广播机制避免显式循环,直接生成M×N网格坐标。行索引m对应Y方向,列索引n对应X方向,与坐标系定义一致。坐标展平时按行优先顺序(先固定行m,遍历所有列n),该顺序与后续波束控制中按行扫描阵元的处理逻辑一致。孔径尺寸定义为阵列外缘尺寸(Lx=N·dx,Ly=M·dy),而非相邻单元间距的累加。

验证方法

运行上述代码,观察输出应满足以下判定标准:

  • 单元总数为M×N=96;
  • 孔径尺寸输出为0.180m×0.120m(12×0.015,8×0.015);
  • 几何中心为(0,0,0);
  • 第一个单元(m=0,n=0)坐标应为x=(0-5.5)×0.015=-0.0825m,y=(0-3.5)×0.015=-0.0525m,z=0;
  • 最后一个单元(m=7,n=11)坐标应为x=(11-5.5)×0.015=+0.0825m,y=(7-3.5)×0.015=+0.0525m,z=0;
  • 所有坐标关于原点对称分布,即任意单元(x,y)存在对应单元(-x,-y)。

可通过打印coords数组并检查上述边界值来确认坐标计算的正确性。

8×12矩形栅格阵列单元布局(dx=dy=0.015m) X (列方向) Y (行方向) 原点 孔径宽度 Lx = 12×0.015 = 0.180 m 孔径高度 Ly = 8×0.015 = 0.120 m (-0.0825, -0.0525) (+0.0825, +0.0525) 阵元位置 (96个) 阵列几何中心

落地与扩展

本代码可直接作为独立Python脚本运行,仅依赖NumPy。在机载相控阵雷达波束控制工程中,该坐标计算结果将作为阵元级相位补偿的输入——当波束指向为(θ,φ)时,第i个阵元的空间相位延迟为(2π/λ)(x_i·sinθ·cosφ + y_i·sinθ·sinφ),其中(x_i,y_i)即本案例输出的坐标值。若需适应圆形阵列或稀疏布阵,只需修改坐标生成逻辑,后续相位计算接口保持不变。