• 正文
  • 相关推荐
申请入驻 产业图谱

基于RLS自适应滤波与互相关对齐的数据分析链路

04/28 15:25
664
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

在现代通信、雷达工业控制系统中,信号往往会受到复杂环境噪声的污染。传统的固定系数滤波器(如 FIR/IIR)在处理非平稳噪声时显得力不从心,而自适应滤波器能够根据输入信号的统计特性动态调整权重,实现最优滤波。

本文将基于一段完整的 MATLAB 测试代码,深度剖析递归最小二乘(RLS)自适应滤波的数学原理,并探讨如何通过定点量化与互相关对齐技术,为 FPGA 硬件实现铺平道路。

定点量化与 COE 文件生成

在 FPGA 等硬件平台上,浮点运算极其消耗资源。因此,将算法移植到硬件的第一步是定点量化

代码中定义了 FIXED_WORD_LEN = 32(总位宽)和 FIXED_FRAC_LEN = 16(小数位宽),即采用 Q15.16 格式。

通过 quantizer 对象,代码不仅完成了数据的截断或饱和处理,还直观地预演了硬件中有限字长效应带来的量化噪声。

代码将含噪信号转换为了 Xilinx 专用的 .coe 文件格式。在 Vivado 开发中,.coe 文件可以直接关联到 Block RAM (BRAM) 的 IP 核,作为只读存储器 (ROM) 的初始化文件。这意味着,这段 MATLAB 脚本生成的不仅是仿真数据,更是未来 FPGA 上电后第一个时钟周期就能读到的“真实物理输入激励”。

二、 RLS 自适应滤波

相较于著名的 LMS(最小均方)算法,RLS 算法以更高的计算复杂度为代价,换取了极快的收敛速度和不受输入信号自相关矩阵特征值散布影响的优良特性。

RLS 的核心思想是最小化加权最小二乘误差准则:

$$ J(n) = \sum_{i=1}^{n} \lambda^{n-i} |e(i)|^2 $$

其中 (代码中的 RLS_LAMBDA = 0.95)是遗忘因子,它决定了对过去数据的记忆长度:

越接近 1,记忆越长,滤波越平滑;越小,则跟踪快速变化的能力越强,但对噪声也更敏感。

在代码的 RLS 迭代核心区,完美映射了以下四个递推方程:

输出估计y_n = w' * x_n (当前权重与输入向量的内积)。

误差计算e_n = d_rls(n) - y_n。这里有一个非常巧妙的工程处理:d_rls 并非理想信号,而是含噪信号经过 40 点移动平均滤波后的结果。在缺乏纯净参考通道的实际场景中,利用低通平滑提取信号包络作为“伪期望信号”,是引导 RLS 权重向低频方波特征收敛的有效策略。

增益向量计算k = (P * x_n) / denom。这是 RLS 的大脑,其中 P 是逆相关矩阵的迭代估计(代码中初始化为 eye(RLS_M) * RLS_DELTA)。

RLS_DELTA 决定了初始收敛速度,设置过小会导致初期发散,过大则收敛变慢。

权重与矩阵更新w = w + k * e_n 以及 P = (P - k * x_n' * P) / RLS_LAMBDA。这里利用了矩阵求逆引理,巧妙地避免了每一步都对矩阵进行直接求逆( 复杂度降为 )。

三、 RLS与代码映射

虽然 MATLAB 中短短几行矩阵运算就能跑通 RLS,但在 FPGA 硬件实现中,这却是一个巨大的挑战。观察代码中的 x_n = signalNoisy(n:-1:n-RLS_M+1)',这对应硬件中的抽头延迟线

最耗费资源的是 P * x_n 这一步。对于一个 40 阶(RLS_M = 40)的滤波器,P 是一个 40×40 的矩阵。这意味着仅仅计算一次增益向量,就需要进行 40 次矩阵向量乘法(共计 1600 次乘累加 MAC 操作)。

因此,这段代码不仅用于验证算法的降噪能力(通过底部绘制的误差曲线和系数收敛曲线观察),更是评估硬件资源消耗(DSP slices 和 BRAM 占用)的基准模型

四、 互相关对齐,消除群延迟

自适应滤波器本质上是一个 FIR 滤波器,其物理结构必然引入群延迟

对于 40 阶的线性相位滤波器,信号大约会被延迟 20 个采样点。如果直接拿滤波后的信号与原信号对比计算信噪比(SNR),会因为波形没有对齐而产生巨大的“假误差”。

代码中“互相关计算与移相区”完美解决了这一问题: 通过调用 xcorr(rlsOutput, signalNoisy, 'biased') 计算互相关,找到绝对值最大的峰值坐标 delay。这个 delay 就是系统引入的真实群延迟。随后利用 circshift 函数将滤波输出平移对齐。

性能评估的闭环

对齐前后的 SNR 计算具有截然不同的工程意义:

对齐前 SNR:反映了算法的“原始分离能力”,包含了相位偏移带来的惩罚。

对齐后 SNR:反映了算法在补偿硬件延迟后的“纯粹波形保真度”。文章末尾输出的 snrImprovementShift 才是衡量该 RLS 系统在时域同步系统中真实性能的终极指标。

从 COE 文件定义的数据接口,到 Q15.16 定点格式的位宽规划,再到针对延迟对齐的互相关后处理,每一步都在为最终在 RFSoC 或 FPGA 上实现高速、全并行的 RLS 自适应降噪系统打下坚实的基础。理解了这层含义,工程师才能在后续的 Verilog 编码中,精准地进行流水线切分、资源复用与时序收敛。

相关推荐