LTE学习-信道估计(MMSE算法/LMMSE算法)

上一篇对LS算法做了一个简单的学习,现在再学习 MMSE算法。
MMSE是最小均方误差算法,性能方面优于LS算法,但复杂度过高。MMSE算法是在LS算法的基础上发展的,主要目的是为了消除噪声的影响,公式为:
在这里插入图片描述
其中H为信道响应的真实值,H ̃为信道响应的估值。MMSE的目的就是找一个矩阵W,来让WY更加接近于x。令
在这里插入图片描述
进而得到
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
进而得到:
在这里插入图片描述
R_hy是参考信号处信道频率响应和接收信号之间的互相关矩阵,R_yy是参考信号处接收信号之间的自相关矩阵,接下来对R_hy和R_yy单独做分析。
在这里插入图片描述
在这里插入图片描述
最后得到:
在这里插入图片描述
上式为MMSE的公式, MMSE信道估计算法是以LS估计算法为基础的,同时又考虑了噪声的影响,估计的性能要远远好于LS估计算法。MMSE算法的缺点是计算量大,特别是矩阵的求逆过程是相当的复杂,这在实际应用中很难实现的。
LMMSE算法在MMSE算法上进行了简单的改进,用平均功率
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
QPSK时,β=1;16QAM时,β=17/9;64QAM时,β=2.6857。虽然LMMSE计算较MMSE少了一个求逆,但是即使这样,计算量还是很大,所以一般也不采用。
个人公众号:FPGA打工人
在这里插入图片描述

  • 22
    点赞
  • 210
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
MMSE算法和LMMSE算法是常用的信道估计方法,下面分别给出MATLAB实现代码和MSE计算公式,以及每个参数的含义和计算方法。 ## MMSE算法实现 ```matlab % 信道估计MMSE算法 function [chan_est, MSE] = mmse_est(ofdm_signal, pilot_signal, noise_var, chan_var) % 输入: % ofdm_signal - 经过信道的OFDM信号 % pilot_signal - 导频信号 % noise_var - 噪声方差 % chan_var - 信道方差 % 输出: % chan_est - 估计的信道 % MSE - 估计误差的均方误差 N = length(ofdm_signal); % 码元数 pilot_len = length(pilot_signal); % 导频数 % 提取导频 pilot_idx = pilot_len:pilot_len:N; % 导频的位置 pilot_data = ofdm_signal(pilot_idx); % 导频数据 % 计算信道增益 gain = pilot_data./pilot_signal; % MMSE估计 chan_est = zeros(1,N); % 估计的信道 for i = 1:N if ismember(i,pilot_idx) % 导频位置 chan_est(i) = gain(ceil(i/pilot_len)); else % 数据位置 H = gain.'; % 信道增益转置 Rn = noise_var*eye(N); % 噪声协方差矩阵 Ryy = H*Rn*H'+chan_var*eye(pilot_len); % 信号协方差矩阵 Rxy = H*Rn*ofdm_signal(i); % 信号和噪声的协方差向量 chan_est(i) = Rxy/Ryy; % 信道估计 end end % 计算MSE MSE = sum(abs(chan_est-pilot_signal).^2)/length(pilot_signal); end ``` 其中,输入参数`ofdm_signal`是经过信道的OFDM信号,`pilot_signal`是导频信号,`noise_var`是噪声方差,`chan_var`是信道方差。输出参数`chan_est`是估计的信道,`MSE`是估计误差的均方误差。 MSE的计算公式为: $$ MSE = \frac{1}{N_p}\sum_{i=1}^{N_p}|h_i-\hat{h_i}|^2 $$ 其中,$N_p$是导频数,$h_i$是真实信道增益,$\hat{h_i}$是估计的信道增益。 ## LMMSE算法实现 ```matlab % 信道估计的LMMSE算法 function [chan_est, MSE] = lmmse_est(ofdm_signal, pilot_signal, noise_var, chan_var) % 输入: % ofdm_signal - 经过信道的OFDM信号 % pilot_signal - 导频信号 % noise_var - 噪声方差 % chan_var - 信道方差 % 输出: % chan_est - 估计的信道 % MSE - 估计误差的均方误差 N = length(ofdm_signal); % 码元数 pilot_len = length(pilot_signal); % 导频数 % 提取导频 pilot_idx = pilot_len:pilot_len:N; % 导频的位置 pilot_data = ofdm_signal(pilot_idx); % 导频数据 % 计算信道增益 gain = pilot_data./pilot_signal; % LMMSE估计 chan_est = zeros(1,N); % 估计的信道 for i = 1:N if ismember(i,pilot_idx) % 导频位置 chan_est(i) = gain(ceil(i/pilot_len)); else % 数据位置 H = gain.'; % 信道增益转置 Rn = noise_var*eye(N); % 噪声协方差矩阵 Ryy = H*Rn*H'+chan_var*eye(pilot_len); % 信号协方差矩阵 Rxy = H*Rn*ofdm_signal(i); % 信号和噪声的协方差向量 chan_est(i) = Rxy/Ryy*(pilot_signal'*Ryy^-1*pilot_signal); % 信道估计 end end % 计算MSE MSE = sum(abs(chan_est-pilot_signal).^2)/length(pilot_signal); end ``` 其中,输入参数和输出参数与MMSE算法相同。MSE的计算公式也相同。 MMSE算法和LMMSE算法的区别在于信道估计的计算公式中。MMSE算法的计算公式为: $$ \hat{h_i} = \frac{r_{xy_i}}{r_{yy_i}} $$ 其中,$r_{xy_i}$是信号和噪声的协方差,$r_{yy_i}$是信号协方差。而LMMSE算法的计算公式为: $$ \hat{h_i} = \frac{r_{xy_i}}{r_{yy_i}}\frac{pilot^Hr_{yy}^{-1}pilot}{pilot^Hr_{yy}^{-1}pilot + \sigma_n^2} $$ 其中,$pilot$是导频信号,$\sigma_n^2$是噪声方差。LMMSE算法MMSE算法的基础上,引入了导频信号的先验信息,能够更好地估计信道。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值