2. 均匀面阵的二维波束形成
任务说明
本案例实现矩形栅格均匀面阵(URA)的二维波束形成。给定阵元间距、工作频率与期望指向角(方位角 φ、俯仰角 θ),计算各阵元复加权系数,并生成二维方向图,用于分析波束指向性与旁瓣特性。
阵列模型与加权计算
设面阵位于 x-y 平面,沿 x 轴 M 个阵元、沿 y 轴 N 个阵元,阵元间距均为 d。第 (m,n) 个阵元位置为 (md, nd, 0)。远场信号到达方向由方位角 φ(与 x 轴夹角,0~360°)和俯仰角 θ(与 z 轴夹角,0~90°)描述。期望指向 (φ₀, θ₀) 的常规波束形成加权为:
w(m,n) = exp[ j·(2π/λ)·(md·sinθ₀·cosφ₀ + nd·sinθ₀·sinφ₀) ]
方向图计算时,对任意扫描角 (φ, θ),阵列流形向量与加权向量内积取模,归一化后得到 dB 方向图。
代码实现
import numpy as np
import matplotlib.pyplot as plt
# 参数设置
M, N = 8, 8 # x轴和y轴阵元数
d = 0.5 # 阵元间距(波长归一化,d=0.5λ)
theta0 = 30.0 # 期望俯仰角(度)
phi0 = 45.0 # 期望方位角(度)
# 生成阵元坐标(单位:波长)
x = (np.arange(M) - (M-1)/2) * d
y = (np.arange(N) - (N-1)/2) * d
X, Y = np.meshgrid(x, y)
# 计算加权系数(常规波束形成)
theta0_r = np.deg2rad(theta0)
phi0_r = np.deg2rad(phi0)
w = np.exp(1j * 2*np.pi * (X * np.sin(theta0_r) * np.cos(phi0_r) +
Y * np.sin(theta0_r) * np.sin(phi0_r)))
w = w / np.sqrt(M*N) # 归一化
# 扫描角度网格
theta_scan = np.linspace(0, 90, 181) # 俯仰角 0~90°
phi_scan = np.linspace(0, 360, 361) # 方位角 0~360°
TH, PH = np.meshgrid(np.deg2rad(theta_scan), np.deg2rad(phi_scan))
# 计算方向图
pattern = np.zeros_like(TH, dtype=complex)
for idx, (th, ph) in enumerate(zip(TH.ravel(), PH.ravel())):
# 扫描方向的阵列流形
a = np.exp(1j * 2*np.pi * (X.ravel() * np.sin(th) * np.cos(ph) +
Y.ravel() * np.sin(th) * np.sin(ph)))
pattern.ravel()[idx] = np.dot(w.ravel().conj(), a)
pattern_db = 20 * np.log10(np.abs(pattern) / np.abs(pattern).max() + 1e-12)
# 绘制二维方向图(以方位角-俯仰角为坐标)
plt.figure(figsize=(10, 8))
plt.pcolormesh(phi_scan, theta_scan, pattern_db.T, shading='auto', cmap='jet', vmin=-40)
plt.colorbar(label='归一化增益 (dB)')
plt.xlabel('方位角 φ (度)')
plt.ylabel('俯仰角 θ (度)')
plt.title(f'均匀面阵二维方向图 (M={M}, N={N}, d={d}λ, 指向: φ₀={phi0}°, θ₀={theta0}°)')
plt.grid(alpha=0.3)
plt.tight_layout()
plt.savefig('ura_pattern.png', dpi=150)
plt.show()
# 输出主瓣峰值位置(用于验证)
peak_idx = np.unravel_index(np.argmax(np.abs(pattern)), pattern.shape)
print(f"方向图峰值位置: φ={phi_scan[peak_idx[0]]:.1f}°, θ={theta_scan[peak_idx[1]]:.1f}°")
运行与验证
依赖:numpy、matplotlib。运行上述脚本将生成二维方向图并保存为 ura_pattern.png。
验证方法:观察方向图峰值是否出现在设定的 (φ₀=45°, θ₀=30°) 位置。由于代码中加权向量与期望方向流形精确匹配,峰值必然位于该角度。同时检查方向图是否关于主瓣对称,且旁瓣电平随角度偏离而下降。
判定标准:控制台输出的峰值位置与设定指向偏差小于 0.5°(受扫描网格分辨率限制);方向图在非指向方向增益明显低于主瓣,且无栅瓣(因 d=0.5λ 满足空间采样条件)。