第【129】期--基于 RLS 自适应天线阵列波束成形与干扰抑制性能研究--matlab完整代码

关注我,追更更多通信仿真代码!

文章目录

    • 摘要
    • [1 引言](#1 引言)
    • [2 信号与系统模型](#2 信号与系统模型)
      • [2.1 均匀线阵接收模型](#2.1 均匀线阵接收模型)
      • [2.2 QPSK调制模型](#2.2 QPSK调制模型)
      • [2.3 信干比与信噪比定义](#2.3 信干比与信噪比定义)
    • [3 自适应波束成形算法](#3 自适应波束成形算法)
      • [3.1 RLS算法原理](#3.1 RLS算法原理)
      • [3.2 LMS与NLMS算法](#3.2 LMS与NLMS算法)
    • [4 仿真结果与分析](#4 仿真结果与分析)
      • [4.1 参数设置](#4.1 参数设置)
      • [4.2 仿真分析](#4.2 仿真分析)
      • [4.3 部分代码](#4.3 部分代码)
    • [5 结论](#5 结论)

摘要

针对现代无线通信系统中中同频干扰严重影响接收性能的问题,本文实现了一种基于递归最小二乘(RLS)算法的自适应天线阵列波束成形方案。系统采用均匀线阵(ULA)结构,在期望用户方向形成主瓣的同时,自动在多个同频干扰方向形成零陷。仿真结果表明,RLS波束成形可显著降低误比特率(BER)和误差矢量幅度(EVM),有效抑制同频干扰。同时分析了阵元数量、遗忘因子等关键参数对系统性能的影响。


1 引言

在现代无线通信系统中,随着用户数量的快速增长和频谱资源的日益紧张,同频干扰已成为限制系统容量和通信质量的主要瓶颈之一。传统的全向天线接收方式无法区分期望信号与干扰信号,当干扰信号强度较大时,接收机输出信噪比会急剧恶化。

自适应天线阵列技术通过在多个阵元上施加可控的复权重,能够自动调整阵列方向图的形状------在期望信号方向形成高增益主瓣,在干扰方向自动形成深零陷,从而有效抑制同频干扰。与固定波束成形不同,自适应波束成形器能够根据接收环境的变化实时调整权向量,具有很强的环境适应能力。

在众多自适应滤波算法中,递归最小二乘(RLS)算法以其收敛速度快、跟踪能力强的特点受到广泛关注。RLS算法通过最小化加权最小二乘代价函数,利用矩阵求引理避免了直接求逆运算,每步迭代的计算复杂度为 O ( N 2 ) O(N^2) O(N2)( N N N为阵元数)。相比之下,LMS算法虽然计算简单(每步 O ( N ) O(N) O(N)),但收敛速度较慢,且收敛速度与特征值扩展密切相关。

本文基于MATLAB平台,实现了RLS、LMS和NLMS三种自适应波束成形算法,在QPSK调制链路下系统比较了三种算法的收敛性能、BER性能和方向图特性,并分析了阵元数量和遗忘因子对系统性能的影响。


2 信号与系统模型

2.1 均匀线阵接收模型

本文采用均匀线阵(Uniform Linear Array, ULA),假设有 N N N个各向同性阵元沿直线等间距排列,阵元间距为 d = λ / 2 d=\lambda/2 d=λ/2( λ \lambda λ为载波波长)。当一个远场窄带信号从角度 θ \theta θ方向入射时,相邻阵元之间产生固定的相位差,其阵列导向矢量(Steering Vector)为:

a ( θ ) = 1 e − j k d cos ⁡ θ e − j 2 k d cos ⁡ θ ⋯ e − j ( N − 1 ) k d cos ⁡ θ T \mathbf{a}(\theta) = \begin{bmatrix} 1 & e^{-jkd\cos\theta} & e^{-j2kd\cos\theta} & \cdots & e^{-j(N-1)kd\cos\theta} \end{bmatrix}^T a(θ)=1e−jkdcosθe−j2kdcosθ⋯e−j(N−1)kdcosθT

其中 k = 2 π / λ k=2\pi/\lambda k=2π/λ为波数。当 d = λ / 2 d=\lambda/2 d=λ/2时, k d = π kd=\pi kd=π。

阵列的接收信号模型为:

x ( n ) = a ( θ 0 ) s ( n ) + a ( θ 1 ) i 1 ( n ) + a ( θ 2 ) i 2 ( n ) + n ( n ) \mathbf{x}(n) = \mathbf{a}(\theta_0)s(n) + \mathbf{a}(\theta_1)i_1(n) + \mathbf{a}(\theta_2)i_2(n) + \mathbf{n}(n) x(n)=a(θ0)s(n)+a(θ1)i1(n)+a(θ2)i2(n)+n(n)

其中:

  • s ( n ) s(n) s(n)为期望用户信号,来波方向为 θ 0 \theta_0 θ0
  • i 1 ( n ) i_1(n) i1(n)、 i 2 ( n ) i_2(n) i2(n)为两个同频干扰信号,来波方向分别为 θ 1 \theta_1 θ1和 θ 2 \theta_2 θ2
  • n ( n ) \mathbf{n}(n) n(n)为各阵元上独立同分布的加性高斯白噪声(AWGN)

波束成形器的输出为:

y ( n ) = w H ( n ) x ( n ) y(n) = \mathbf{w}^H(n)\mathbf{x}(n) y(n)=wH(n)x(n)

其中 w ( n ) = w 1 ( n ) , w 2 ( n ) , ⋯   , w N ( n ) T \mathbf{w}(n)=w_1(n), w_2(n), \\cdots, w_N(n)^T w(n)=w1(n),w2(n),⋯,wN(n)T为复权向量。波束成形的目标就是自适应地调整 w ( n ) \mathbf{w}(n) w(n),使输出 y ( n ) y(n) y(n)尽可能接近期望信号 s ( n ) s(n) s(n),同时抑制干扰。

2.2 QPSK调制模型

系统采用正交相移键控(QPSK)调制,格雷编码。每两个比特映射为一个复符号:

s = 1 2 ( e j π / 4 , e j 3 π / 4 , e j 5 π / 4 , e j 7 π / 4 ) s = \frac{1}{\sqrt{2}} \left( e^{j\pi/4}, e^{j3\pi/4}, e^{j5\pi/4}, e^{j7\pi/4} \right) s=2 1(ejπ/4,ej3π/4,ej5π/4,ej7π/4)

符号速率与比特速率的关系为 R s = R b / 2 R_s = R_b / 2 Rs=Rb/2。接收端通过判断实部和虚部的符号来完成解调:实部大于0对应比特0,小于0对应比特1;虚部同理。

2.3 信干比与信噪比定义

两个干扰信号的功率相对于期望信号分别由信干比(SIR)控制:

SIR i = P s P i , i = 1 , 2 \text{SIR}i = \frac{P_s}{P{i}}, \quad i=1,2 SIRi=PiPs,i=1,2

噪声功率由信噪比(SNR)控制:

SNR = P s P n \text{SNR} = \frac{P_s}{P_n} SNR=PnPs


3 自适应波束成形算法

3.1 RLS算法原理

RLS算法的核心思想是在每个时间步最小化如下加权最小二乘代价函数:

J ( n ) = ∑ k = 1 n λ n − k ∣ e ( k ) ∣ 2 J(n) = \sum_{k=1}^{n} \lambda^{n-k} |e(k)|^2 J(n)=k=1∑nλn−k∣e(k)∣2

其中 e ( k ) = d ( k ) − w T ( n ) x ( k ) e(k) = d(k) - \mathbf{w}^T(n)\mathbf{x}(k) e(k)=d(k)−wT(n)x(k)为先验误差, d ( k ) d(k) d(k)为期望响应(在本文中即发射端已知的QPSK参考信号), λ ∈ ( 0 , 1 ] \lambda \in (0,1] λ∈(0,1]为遗忘因子,其作用是指数式地弱化过去的数据,使算法能够跟踪时变信道。

RLS算法的具体迭代步骤如下:

初始化:

w ( 0 ) = 0 , P ( 0 ) = δ − 1 I \mathbf{w}(0) = \mathbf{0}, \quad \mathbf{P}(0) = \delta^{-1}\mathbf{I} w(0)=0,P(0)=δ−1I

对于每个采样时刻 n = 1 , 2 , ⋯ n=1,2,\cdots n=1,2,⋯:

  1. 计算先验误差:

    α ( n ) = d ( n ) − x T ( n ) w ( n − 1 ) \alpha(n) = d(n) - \mathbf{x}^T(n)\mathbf{w}(n-1) α(n)=d(n)−xT(n)w(n−1)

  2. 计算增益向量:

    g ( n ) = P ( n − 1 ) x ∗ ( n ) λ + x T ( n ) P ( n − 1 ) x ∗ ( n ) \mathbf{g}(n) = \frac{\mathbf{P}(n-1)\mathbf{x}^*(n)}{\lambda + \mathbf{x}^T(n)\mathbf{P}(n-1)\mathbf{x}^*(n)} g(n)=λ+xT(n)P(n−1)x∗(n)P(n−1)x∗(n)

  3. 更新权向量:

    w ( n ) = w ( n − 1 ) + α ( n ) g ( n ) \mathbf{w}(n) = \mathbf{w}(n-1) + \alpha(n)\mathbf{g}(n) w(n)=w(n−1)+α(n)g(n)

  4. 更新逆相关矩阵:

    P ( n ) = 1 λ P ( n − 1 ) − g ( n ) x T ( n ) P ( n − 1 ) \mathbf{P}(n) = \frac{1}{\lambda}\left\\mathbf{P}(n-1) - \\mathbf{g}(n)\\mathbf{x}\^T(n)\\mathbf{P}(n-1)\\right P(n)=λ1P(n−1)−g(n)xT(n)P(n−1)

其中 P ( n ) = R − 1 ( n ) \mathbf{P}(n) = \mathbf{R}^{-1}(n) P(n)=R−1(n)为输入信号相关矩阵的逆矩阵。利用矩阵求引理(Woodbury恒等式),RLS避免了每步对 N × N N\times N N×N矩阵直接求逆,计算复杂度为 O ( N 2 ) O(N^2) O(N2)。

遗忘因子 λ \lambda λ的取值在收敛速度与稳态误差之间存在权衡: λ \lambda λ越接近1,算法记忆越长,稳态误差越小,但收敛速度越慢; λ \lambda λ越小,算法跟踪能力越强,但稳态波动越大。具体取值见仿真参数设置。

3.2 LMS与NLMS算法

作为对比,本文同时实现了最小均方(LMS)和归一化最小均方(NLMS)算法。

LMS算法采用最速下降思想,沿瞬时梯度的负方向更新权向量:

w ( n + 1 ) = w ( n ) + μ x ∗ ( n ) e ( n ) \mathbf{w}(n+1) = \mathbf{w}(n) + \mu \mathbf{x}^*(n)e(n) w(n+1)=w(n)+μx∗(n)e(n)

其中 μ \mu μ为步长因子。LMS算法计算简单(每步仅 O ( N ) O(N) O(N)),但收敛速度取决于输入信号相关矩阵的特征值分布,特征值扩展越大收敛越慢。步长 μ \mu μ的选取需在收敛速度与稳态失调量之间折中。

NLMS算法对LMS进行归一化改进,用输入信号能量对步长进行归一化:

w ( n + 1 ) = w ( n ) + μ ∥ x ( n ) ∥ 2 + ϵ x ∗ ( n ) e ( n ) \mathbf{w}(n+1) = \mathbf{w}(n) + \frac{\mu}{\|\mathbf{x}(n)\|^2 + \epsilon}\mathbf{x}^*(n)e(n) w(n+1)=w(n)+∥x(n)∥2+ϵμx∗(n)e(n)

其中 ϵ \epsilon ϵ为防止除零的小常数。NLMS的收敛性能对输入信号功率变化不敏感,步长 μ \mu μ的取值范围通常比LMS更宽松。


4 仿真结果与分析

4.1 参数设置

参数 取值
阵列结构 均匀线阵(ULA)
阵元数 N N N 10
阵元间距 d d d λ / 2 \lambda/2 λ/2
调制方式 QPSK(格雷编码)
期望用户方向 60°
干扰源1方向 / SIR 30° / 3 dB
干扰源2方向 / SIR 120° / 3 dB
RLS遗忘因子 λ \lambda λ 0.75
RLS正则化参数 δ \delta δ 10 − 2 10^{-2} 10−2
LMS步长 μ \mu μ 0.002
NLMS步长 μ \mu μ 0.1

4.2 仿真分析

可以看到,波束成形前由于受到两个3 dB干扰的影响,星座点严重发散,四个QPSK符号簇混叠不清,BER较高。RLS波束成形后的阵列输出,星座点明显收拢到四个理想符号位置附近,符号簇边界清晰可辨。定量来看,波束成形后EVM从百分之几十的水平降低到个位数百分比,BER也相应下降。这表明RLS波束成形器成功地在两个干扰方向形成了零陷,有效抑制了干扰能量。其余结论如图所示,


4.3 部分代码

c 复制代码
function [y, e, w_time, w_final] = rls_beamformer(Rx_Sig, desired, N, lambda, delta)
% 递归最小二乘(RLS)自适应波束成形器
w = zeros(N,1);
P = (1/delta) * eye(N);
L = size(Rx_Sig,2);
y = zeros(1,L);
e = zeros(1,L);
w_time = zeros(N,L);

for n = 1:L
    x = Rx_Sig(:,n);
    y(n) = w.' * x;
    e(n) = desired(n) - y(n);
    alpha = desired(n) - x.'*w;
    g1 = P * conj(x);
    g2 = lambda + x.'*P*conj(x);
    g  = g1 / g2;
    P  = (1/lambda)*P - g*x.'*(1/lambda)*P;
    w  = w + alpha*g;
    w_time(:,n) = w;
end
w_final = w_time(:,end);
end
c 复制代码
function demo = run_baseline_simulation(CFG)
% 运行一次可复现的 RLS 演示仿真,返回后续绘图所需的全部中间量

    rng(1);   % 可复现的示例运行
    bits_demo = max(CFG.BitsPerBlock*4, 20000);
    [Rx_Sig, QPSK_TxSig, uncoded_bits_Tx] = generate_scenario( ...
        CFG.NumofAntenna, CFG.Kd, CFG.theta_tx, CFG.theta_Int1, CFG.theta_Int2, ...
        CFG.SIR1_dB, CFG.SIR2_dB, CFG.SNR_demo_dB, bits_demo, CFG.ModuRadians);

    [y_bf, e_bf, w_time, w_final] = rls_beamformer(Rx_Sig, QPSK_TxSig, ...
        CFG.NumofAntenna, CFG.lambda, CFG.delta);

    y_ref = Rx_Sig(1,:);   % 单阵元参考(无波束成形)

    demo.Rx_Sig          = Rx_Sig;
    demo.QPSK_TxSig      = QPSK_TxSig;
    demo.uncoded_bits_Tx = uncoded_bits_Tx;
    demo.y_bf            = y_bf;
    demo.e_bf            = e_bf;
    demo.w_time          = w_time;
    demo.w_final         = w_final;
    demo.y_ref           = y_ref;
end

5 结论

本文针对同频干扰抑制问题,基于均匀线阵与QPSK调制链路,实现了RLS、LMS和NLMS三种自适应波束成形算法。仿真结果表明:RLS算法收敛速度快、稳态误差小,能在两个干扰方向形成深零陷,降低EVM与BER。阵元数增加可提升方向图分辨能力,遗忘因子 λ \lambda λ需在收敛速度与稳态误差间折中。总体而言,RLS波束成形在强同频干扰场景下具有明显优势,适合对实时性要求较高的通信系统。

相关推荐
宁静致远20211 小时前
在VScode中使用MATLAB
vscode·matlab
88号技师1 小时前
2026年9月SCI-天气状态蚂蚁优化算法Weather State Ants Optimizer-附Matlab免费代码
开发语言·算法·matlab·优化算法
weixin_307779138 天前
C++代码实现MATLAB中的ode23tb函数功能
开发语言·c++·算法·matlab
菜鸟~noob2338 天前
【太空电子战】从CCS到Meadowlands:反通信系统的二十年演进史【含matlab代码】
开发语言·matlab
菜鸟~noob2339 天前
【太空电子战】Meadowlands作战验收:美国太空军可逆干扰能力的里程碑【含matlab代码】
matlab·电子战
菜鸟~noob23310 天前
【Bonjour】华为Peerium架构深度解析:从冯·诺依曼到百万处理器“一台计算机”,附MATLAB性能仿真【含matlab代码,可直接运行】
开发语言·matlab·华为·peerium
民乐团扒谱机10 天前
【手把手通信仿真】FSK与GFSK调制原理对比及MATLAB全实现,附频谱波形分析
matlab·蓝牙·微电子·通信技术·通信原理·gfsk·fsk
ι:11 天前
单相桥式全控整流仿真从零复现教学
windows·学习·matlab·simulink
菜鸟~noob23311 天前
【电子战】第14篇:TOA 定位——圆交汇与到达时间【含matlab代码】
开发语言·matlab