3. 波束指向角度到阵元相位差的转换

波束指向角度到阵元相位差的转换 学习卡片

任务定义

本案例完成相控阵天线中“波束指向角 → 阵元间相位差”的数值转换。给定工作频率 f、阵元间距 d、波束指向角 θ₀(相对法线方向),计算相邻阵元间的理论相位差 Δφ,并进一步生成各阵元相对参考阵元的实际相位值,供后续移相器量化或波控码计算使用。

数学模型

对于均匀线阵,相邻阵元间的空间延迟对应的相位差为:

Δφ = (2π · d · sinθ₀) / λ

其中 λ = c / f 为波长,c = 3×10⁸ m/s。第 n 个阵元(n = 0, 1, …, N-1)相对第 0 号参考阵元的相位为:

φₙ = n · Δφ

工程中通常将相位折算到 (-π, π] 区间,便于后续移相器查表。

代码实现


import numpy as np

def beam_steering_phase(freq_hz, d_m, theta0_deg, n_elements):
    """
    计算均匀线阵波束指向角对应的阵元相位差。
    
    参数:
        freq_hz     : 工作频率 (Hz)
        d_m         : 阵元间距 (m)
        theta0_deg  : 波束指向角 (度),相对法线方向
        n_elements  : 阵元数量
    
    返回:
        delta_phi_rad : 相邻阵元相位差 (弧度)
        phases_rad    : 各阵元相对0号阵元的相位 (弧度,折算到(-pi, pi])
    """
    c = 3e8  # 光速 m/s
    lam = c / freq_hz
    theta0 = np.deg2rad(theta0_deg)
    
    # 相邻阵元相位差
    delta_phi = 2 * np.pi * d_m * np.sin(theta0) / lam
    
    # 各阵元相位
    n = np.arange(n_elements)
    phases = n * delta_phi
    
    # 折算到 (-pi, pi]
    phases_wrapped = (phases + np.pi) % (2 * np.pi) - np.pi
    
    return delta_phi, phases_wrapped

# 示例:X波段 10 GHz,半波长间距,8阵元,指向30°
if __name__ == "__main__":
    f = 10e9          # 10 GHz
    d = 0.015         # 约半波长 (0.5 * 0.03m)
    theta = 30.0      # 30度
    N = 8
    
    dphi, ph = beam_steering_phase(f, d, theta, N)
    
    print(f"波长: {3e8/f:.4f} m")
    print(f"相邻阵元相位差: {dphi:.4f} rad ({np.rad2deg(dphi):.2f}°)")
    print("各阵元相位 (rad):")
    for i, p in enumerate(ph):
        print(f"  阵元 {i}: {p:+.4f} rad ({np.rad2deg(p):+.2f}°)")

预期输出

当 f = 10 GHz、d = 0.015 m、θ₀ = 30°、N = 8 时,代码逻辑直接推出:


波长: 0.0300 m
相邻阵元相位差: 1.5708 rad (90.00°)
各阵元相位 (rad):
  阵元 0: +0.0000 rad (+0.00°)
  阵元 1: +1.5708 rad (+90.00°)
  阵元 2: -3.1416 rad (-180.00°)
  阵元 3: -1.5708 rad (-90.00°)
  阵元 4: +0.0000 rad (+0.00°)
  阵元 5: +1.5708 rad (+90.00°)
  阵元 6: -3.1416 rad (-180.00°)
  阵元 7: -1.5708 rad (-90.00°)

注意:阵元 2 的相位理论值为 π,折算到 (-π, π] 后为 -π(即 -3.1416 rad),这是区间取值的正常结果。

验证方法

运行上述 Python 脚本,观察输出是否与预期一致。验证要点:

  • 相邻阵元相位差 Δφ 是否等于 2π·d·sinθ₀/λ 的理论值(本例为 π/2);
  • 各阵元相位是否为 n·Δφ 的循环折算结果;
  • 改变 θ₀ 为 0° 时,所有相位应为 0;改变 θ₀ 为 90° 时,Δφ 应接近 2π·d/λ(本例为 π)。

判定标准:数值偏差小于 1×10⁻⁶ rad 即通过。

工程说明

本代码输出的是连续相位值,实际波控系统需根据移相器位数(如 6 位)对相位进行量化并转换为波控码。量化过程在后续案例中单独处理。当前案例仅完成角度到相位差的精确转换,作为波控链路的第一级计算。

波束指向角 → 阵元相位差转换链路 输入参数 f = 10 GHz d = 0.015 m θ₀ = 30° 核心计算 λ = c / f Δφ = 2π·d·sinθ₀ / λ φₙ = n · Δφ 输出结果 Δφ = 1.5708 rad (90°) 阵元0: 0 rad 阵元1: +1.5708 rad 后续处理(本案例不涉及) 相位量化 → 波控码生成 相位折算区间: (-π, π]