4、LS信道估计算法:最小二乘法的原理、推导与实现

各位好,今天我们来聊聊LS信道估计。说实话,这是我最常用的算法之一。为什么?因为它简单、直接、好理解。我在做OFDM接收机的时候,第一个上手的信道估计算法就是LS。你想想看,一个算法如果连原理都搞不清楚,怎么敢用在产品里?

4.1 最小二乘法的核心思想

LS,全称Least Squares,中文叫最小二乘。说白了,就是找一个信道估计值,让接收信号和估计出来的信号之间的误差平方和最小。

咱们先看数学模型。假设发送信号是X,接收信号是Y,信道是H,噪声是N。那么:

Y = H * X + N

我们的目标,就是找到一个Ĥ,让下面的代价函数最小:

J(Ĥ) = ||Y - Ĥ * X||²

嗯,这里要注意。这个||·||²表示的是向量的二范数的平方,也就是所有元素误差的平方和。我刚开始学的时候,总把范数和绝对值搞混,后来才明白——范数是对向量整体的一种度量。

4.2 推导过程:一步步来

好,我们来推导一下。把代价函数展开:

J(Ĥ) = (Y - ĤX)ᴴ(Y - ĤX)

这里上标ᴴ表示共轭转置。为什么用共轭转置?因为我们的信号是复数信号,OFDM嘛,都是复数的。

展开后得到:

J(Ĥ) = YᴴY - YᴴĤX - XᴴĤᴴY + XᴴĤᴴĤX

现在,对Ĥ求偏导,令其等于0。这里有个技巧——复矩阵求导和实数不太一样。我建议你记住这个公式:

∂(aᴴĤb)/∂Ĥ = abᴴ
∂(bᴴĤᴴa)/∂Ĥ = abᴴ
∂(ĤᴴĤ)/∂Ĥ = 2Ĥ

套用公式,得到:

∂J/∂Ĥ = -Y Xᴴ - Y Xᴴ + 2Ĥ X Xᴴ = 0

化简一下:

-2Y Xᴴ + 2Ĥ X Xᴴ = 0
Ĥ X Xᴴ = Y Xᴴ
Ĥ = Y Xᴴ (X Xᴴ)⁻¹

如果X Xᴴ是可逆的,那么:

Ĥ_LS = Y / X

你看,最后的结果就是这么简单!LS信道估计,其实就是接收信号除以发送信号。我在项目中第一次推导出这个结果时,还愣了一下——就这么简单?是的,就是这么简单。

核心结论:LS信道估计的本质是频域上的逐点除法。每个子载波上的信道响应,等于该子载波上的接收信号除以发送信号。

4.3 实现步骤:手把手教你

实际实现时,我们通常用导频来做。为什么?因为接收端不知道发送数据啊。但导频是收发双方约定好的,接收端知道导频的值。

具体步骤是这样的:

  1. 提取导频位置:从接收到的OFDM符号中,把导频子载波上的值取出来
  2. 计算LS估计:对每个导频子载波,用接收值除以已知的导频值
  3. 插值:导频位置的信道估计出来了,但数据位置还没有。需要用插值算法把整个信道的响应补全

我给大家看一段简单的MATLAB代码:

function H_ls = ls_channel_estimation(Y, X_pilot, pilot_indices)
    % Y: 接收的OFDM符号(频域)
    % X_pilot: 已知的导频序列
    % pilot_indices: 导频子载波索引
    
    % 提取导频位置的接收信号
    Y_pilot = Y(pilot_indices);
    
    % LS估计:接收值除以导频值
    H_pilot = Y_pilot ./ X_pilot;
    
    % 插值得到所有子载波的信道响应
    % 这里用最简单的线性插值
    H_ls = interp1(pilot_indices, H_pilot, 1:length(Y), 'linear', 'extrap');
end

经验之谈:我在实际项目中,导频数量一般取子载波总数的1/8到1/4。太少的话插值误差大,太多的话频谱效率低。这个比例是我踩过坑之后总结出来的。

4.4 LS算法的优缺点

咱们客观地说,LS算法有优点也有缺点。我列个表给大家看:

优点 缺点
实现简单,计算量小 没有考虑噪声的影响
不需要信道统计信息 低信噪比下性能较差
对导频设计要求低 估计精度有限
适合硬件实现 对导频数量敏感

说白了,LS算法就是个"裸估计"。它假设噪声是零,但实际上噪声永远存在。所以在信噪比高的时候,LS效果不错;信噪比低的时候,误差就大了。

避坑指南:我曾经在一个项目中,直接用LS做信道估计,结果在低信噪比场景下性能惨不忍睹。后来加了MMSE平滑才解决问题。所以,如果你的系统工作信噪比低于10dB,建议不要单独使用LS,至少要加个平滑滤波。

4.5 知识体系:一张图看懂

下面我用一张SVG图,把LS信道估计的核心逻辑串起来:

LS信道估计算法知识体系 接收信号 Y 已知导频 X 核心运算 Ĥ = Y_pilot / X_pilot 插值(线性/样条/FFT) 全子载波信道响应 Ĥ 关键要点 • 频域逐点除法 • 无需信道统计信息 • 计算复杂度低 • 高SNR下性能好 • 低SNR需加平滑 • 导频密度影响精度 常见插值方法: 1. 线性插值(最简单) 2. 样条插值(平滑) 3. FFT插值(精度高)

4.6 实际应用中的注意事项

最后,我分享几个实际项目中积累的经验:

  • 导频功率问题:导频的功率一般比数据高2-3dB。为什么?因为导频是用来做信道估计的,它的准确性直接影响整个系统的性能。我见过一个项目,导频功率和数据一样,结果信道估计误差大,整个链路都跑不起来。
  • 边缘子载波处理:OFDM符号两边的子载波,信道变化往往比较剧烈。插值时要注意边界效应。我习惯在边缘加几个虚拟导频,或者用外插法处理。
  • 时变信道:如果信道变化很快,一个OFDM符号内的信道就不能认为是恒定的。这时候LS估计的误差会增大。解决办法是缩短符号长度,或者用更复杂的估计算法。

好了,LS信道估计就讲到这里。这个算法虽然简单,但它是理解更复杂算法的基础。你把它吃透了,后面学MMSE、LMMSE就会轻松很多。


公众号:蓝海资料掘金营,微信deep3321