OFDM信道估计matlab仿真,对比LS,MMSE, TD-LMMSE,TDD-LMMSE,TD-Qabs-LMMSE

1.算法描述

        信道估计器是接收机一个很重要的组成部分。在OFDM系统中,信道估计器的设计上要有两个问题:** 一是导频信息的选择,由于无线信道的时变特性,需要接收机不断对信道进行跟踪,因此导频信息也必须不断的传送: 二是既有较低的复杂度又有良好的导频跟踪能力的信道估计器的设计,在确定导频发送方式和信道估计准则条件下,寻找最佳的信道估计器结构。 **在实际设计中,导频信息的选择和最佳估计器的设计通常又是相互关联的,因为估计器的性能与导频信息的传输方式有关。

 

 

 

 

       通过信道佔计算法,接收机可以得到信道的冲激响应,在现代无线通信系统中,信道的信息已经得到了充分的利用。自适应的信道均衡器利用信道估计来对抗ISI的影响。分集技术利用信道佔计,实现与接收信号最佳匹配的接收机。最大似然检测通过信道估计使得接收端错误概率最小化。此外,信道估计的个重要的好处在于它使得相干解调成为可能。因为相干解调需要知道信号的相位信息,与非相干解调相比,可以提高系统的整体性能,而信道估计技术使之成为可能。

 

       基于训练序列的信道估计算法是指利用接收机已知的信息来进行信道估计。它的一个好处在于其应用广泛,几乎可以用于所有的无线通信系统。它的缺点也是显而易见的,训练序列占用了信息比特,降低了信道传输的有效性,浪费了带宽。另外,在接收端,要将整帧的信号接收后才能提取出训练序列进行信道估计,带来了不叫避免的时延,所以对帧结构提出了限制要求,比如快哀信道下,由于信道的相关时间可能小于帧长,基于训练序列的信道估计算法应用受到限制。

 

       盲估计不需要训练序列。盲估计算法的实现需要利用传输数据的内在的数学信息。这种算法与基于训练序列的算法相比虽然节约了带宽,但仍有自身的缺点。算法的运算量太大,灵活性很差,在实时系统中的应用受到了限制。但是盲估计算法不需要训练序列,与基于训练序列的信道估计算法相比提高了系统的效率,所以它在无线通信中的应用越来越受到重视。

 

       通常通信系统中采用基于训练序列的信道估计算法。针对不同的信道情况,我们将基于训练序列的信道估计分为基于慢衰信道下的信道估计和基于快衰信道下的信道估计,分别对应块状导频和梳状导频。需要说明的是,这里的慢衰和快衰信道与道常意义下的馒哀和快衰信道不同,这里所说的快衰和慢收足根据信道与信号变化快慢的相对关系而确定的。我们定义如果信道在OFDM信号一帧的时间内保持准静止,则称之为慢衰信道:如果在一帧时间内发生显著变化,则称之为快衰信道。

       LMMSE估计算法只利用频域内的相关性,所以比普通的基于时频二维的算法的复杂度要低,但算法复杂度仍然很高,在实际应用中受到限制:基于DFT的算法在信道同步定时不是很理想的时候,会出现采样不匹配的缺陷。为了进一步提商信道估计的性能,一种方法是利用最佳低阶理论简化LMMSE算法,另外一种低阶近似算法是基于DFT, 简化LMMSE算法。简化算法是通过奇异值分解(SVD, Singular Value Decomposition)来实现的。

 

       LMMSE 信道估计是在 MMSE 信道估计的基础上做了一次线性平滑。因为随着输入信号和噪声的变化,MMSE 算法需要不断进行矩阵求逆运算(包含两个矩阵求逆),计算量非常大。因此可以考虑将 MMSE 式中的 XHXXHX 用其均值来替代,可以减少一个矩阵求逆的运算量。

 

 

 

 

针对上述LMMSE算法运算量大和信道估计精确度低的问题,本文从如下两方面入手:

 

1)采用降低线性变换矩阵维数的方法,将转换矩阵看作单位矩阵,从而简化LMMSE估计算法;

 

2)对AMGN信道的时域特性进行研究分析,从而提高LMMSE算法的运算速度和系统性能。

 

1 LMMSE信道估计算法

 

OFDM系统中做基于辅助导频的信道估计,即在接收端确认可正确接收发送端发送的数据信号的数量,从而计算出发送端导频位置处的频域响应信号。

 

1.1 LS信道估计算法

 

LS算法是我们最常使用的信道估计算法中最简单的一种,其表达式推导如下:

 

假设OFDM系统在做信道估计时发送的已知导频数据信号为X,接收端收到的导频数据信号为YW为叠加在导频上的加性高斯白噪声,则可以得到它们之间的关系:

 

1.2 LMMSE信道估計算法

 

1.3 改进的LMMSE信道估计算法

 

从上述算法的分析可知,通过对LS算法的研究可以得到信道的频域响应信号,但在对LS算法研究时忽略了信道中的噪声影响。虽然LMMSE算法抑制了信道噪声,但该算法的运算量大,需要对它做矩阵变换和逆变换。考虑到噪声对信道的影响,对高斯信道的时域特性进行研究,发现信道的能量大部分分布在前L径多径,并且可以避免上述分析中对自相关矩阵的运算与逆运算。而AWGN信道的时域能量可以表示为:

 

1.4 简化的LMMSE信道估计算法

 

由上述分析可知,不论是LMMSE算法还是LRMMSE算法,都避免不了庞大的矩阵运算,所以文中采用最简单的方法对LMMSE算法进行简化。思路:减少时域内的非零成分,忽略抽样点的方差。当LS在做信道估计时,我们选择其中功率较大的信道,将出现这种情况的信道个数定为m,然后,这m个参数直接作为傅里叶变换参数的个数输入。在该时域内的线性变换矩阵就转换为m×m的单位矩阵。

 

2.仿真效果预览

matlab2017b仿真结果如下:

 

 

 

 

3.MATLAB核心程序

 

for ii = 1:length(EsNodB)
    disp('EsN0dB is :'); disp(EsNodB(ii));tic;
    ChMSE_LS = 0;
    ChMSE_LMMSE=0; 
    TDMSE_LMMSE =0;
    TDDMSE_LMMSE=0;
    TDQabsMSE_LMMSE =0;
    for mc = 1:MC
% Random channel taps
        g = randn(L,1)+1i*randn(L,1);
        g = g/norm(g);
        H = fft(g,nFFT);
% generation of symbol
        X = randi([0 M-1],nFFT,1);  %BPSK symbols
        XD = modulate(modObj,X)/sqrt(10); % normalizing symbol power
        x = F'*XD;
        xout = [x(nFFT-nCP+1:nFFT);x];        
% channel convolution and AWGN
        y = conv(xout,g);
        nt =randn(nFFT+nCP+L-1,1) + 1i*randn(nFFT+nCP+L-1,1);
        No = 10^(-EsNodB(ii)/10);
        y =  y + sqrt(No/2)*nt;
% Receiver processing
        y = y(nCP+1:NT);
        Y = F*y;
% frequency doimain LS channel estimation 
        HhatLS = Y./XD; 
        ChMSE_LS = ChMSE_LS + ((H -HhatLS)'*(H-HhatLS))/nFFT;
% Frequency domain LMMSE estimation
        Rhh = H*H';
        W = Rhh/(Rhh+(beta/snr(ii))*eye(nFFT));
        HhatLMMSE = W*HhatLS;
        ChMSE_LMMSE = ChMSE_LMMSE + ((H -HhatLMMSE)'*(H-HhatLMMSE))/nFFT;        
% Time domain LMMSE estimation
        ghatLS = ifft(HhatLS,nFFT);
        Rgg = g*g';
        WW = Rgg/(Rgg+(beta/snr(ii))*eye(L));
        ghat = WW*ghatLS(1:L);
        TD_HhatLMMSE = fft(ghat,nFFT);%        
        TDMSE_LMMSE = TDMSE_LMMSE + ((H -TD_HhatLMMSE)'*(H-TD_HhatLMMSE))/nFFT;   
 
 % Time domain LMMSE estimation - ignoring channel covariance
        ghatLS = ifft(HhatLS,nFFT);
        Rgg = diag(g.*conj(g));
        WW = Rgg/(Rgg+(beta/snr(ii))*eye(L));
        ghat = WW*ghatLS(1:L);
        TDD_HhatLMMSE = fft(ghat,nFFT);%        
        TDDMSE_LMMSE = TDDMSE_LMMSE + ((H -TDD_HhatLMMSE)'*(H-TDD_HhatLMMSE))/nFFT;    
  
  % Time domain LMMSE estimation - ignoring smoothing matrix
        ghatLS = ifft(HhatLS,nFFT);
        TDQabs_HhatLMMSE = fft(ghat,nFFT);%        
        TDQabsMSE_LMMSE = TDQabsMSE_LMMSE + ((H -TDQabs_HhatLMMSE)'*(H-TDQabs_HhatLMMSE))/nFFT;          
         
    end

 

  

 

posted @ 2023-03-12 11:49  我爱C编程  阅读(215)  评论(0编辑  收藏  举报