赞
踩
在学习了LMMSE算法后,只了解其公式
H
^
L
M
M
S
E
=
R
H
H
(
R
H
H
+
β
S
N
R
)
−
1
H
^
L
S
\hat{H}_{LMMSE}=R_{HH}(R_{HH}+\frac{\beta}{SNR})^{-1}\hat{H}_{LS}
H^LMMSE=RHH(RHH+SNRβ)−1H^LS
对于如何复现这一经典算法真是毫无头绪。问题的关键在于:
我们只知道
R
h
h
R_{hh}
Rhh是真实信道h的自相关矩阵,但是网上找不到可靠的求自相关矩阵的代码。
虽说
R
H
H
=
E
{
H
H
H
}
R_{HH}=E\{HH^H\}
RHH=E{HHH},但是具体实现的时候这么做是做不出来的。
H
H
H
HH^H
HHH明显是一个方阵嘛,怎么对其求均值呢?直接用corr函数显然也是不行的
在此,我为大家提供两种复现方法,参考了很多论文,懒得写引用了。望理解。
已知信道先验信息:信道的时延功率谱,即时域信道矩阵h
将h通过fft变换到频域,得到H,然后利用如下代码即可计算出H的自相关矩阵:
function Rhh = cor(H)
len = length(H);
temp=xcorr(H,H)/len;
temp=fliplr(temp);
H_cor_l=round(length(temp)/2);
Rhh=complex(zeros(H_cor_l, H_cor_l),zeros(H_cor_l, H_cor_l));
for i=1:H_cor_l
Rhh(i,:)=temp(H_cor_l+1-i: length(temp)+1-i);
end
end
方法二是MMSE信道估计的实现,主要理论参考
《基于OFDM的无线导频信道估计和信道均衡算法研究_陈博》
稍微改一下就是LMMSE了,就是最后一步的Rhp改成rf2,改一下就行了,相信大家能看懂,不懂的可以评论。(不改是为了大家能顺便实现MMSE)
function [H_MMSE]= MMSE_CE(Y,Xp,Nfft,Nps,h,SNR)% MMSE信道估计 % Y是接收导频,Xp是已知导频,Nfft是fft点数,Nps是导频间隔,h是信道矩阵,SNR是信噪比 snr = 10^(SNR*0.1); Np=Nfft/Nps; H_tilde = Y./Xp; % LS estimate k=0:length(h)-1; %k_ts = k*ts; hh = h*h'; tmp = h.*conj(h).*k; %tmp = h.*conj(h).*k_ts; r = sum(tmp)/hh; r2 = tmp*k.'/hh; %r2 = tmp*k_ts.'/hh; tau_rms = sqrt(r2-r^2); % rms delay df = 1/Nfft; %1/(ts*Nfft); j2pi_tau_df = j*2*pi*tau_rms*df; K1 = repmat([0:Nfft-1].',1,Np); K2 = repmat([0:Np-1],Nfft,1); rf = 1./(1+j2pi_tau_df*(K1-K2*Nps)); K3 = repmat([0:Np-1].',1,Np); K4 = repmat([0:Np-1],Np,1); rf2 = 1./(1+j2pi_tau_df*Nps*(K3-K4)); Rhp = rf; Rpp = rf2 + eye(length(H_tilde),length(H_tilde))/snr; H_MMSE = transpose(Rhp*inv(Rpp)*H_tilde.'); end
如下图是我搭建了一个简易的OFDM传输系统,比较了经典的LS算法和LMMSE算法的性能。因为LS忽略噪声,所以在高信噪比的时候,他的性能会逐渐变好。
创作不易,知识无价,望大家点赞收藏,转载注明出处。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。