m盲信道估计matlab仿真,分别对比非监督式和监督式信道估计,线性信道和非线性信道

92 阅读6分钟

1.算法描述

       所谓信道估计,就是从接收数据中将假定的某个信道模型的模型参数估计出来的过程。如果信道是线性的话,那么信道估计就是对系统冲激响应进行估计。需强调的是信道估计是信道对输入信号影响的一种数学表示,而“好”的信道估计则是使得某种估计误差最小化的估计算法。

 

       在所有通信系统中,信号都会通过一种媒介(信道),当信号通过信道时,信号会发生失真或各种噪声被添加到信号中。正确地解码接收到的信号而不产生太多的错误,就是要从接收信号中去除信道所施加的失真和噪声。要做到这一点,第一步是找出信号经过的信道的特性。这个过程称为“信道估计”。

       无线通信系统的性能很大程度上受到无线信道的影响,如阴影衰落和频率选择性衰落等等,使得发射机和接收机之间的传播路径非常复杂。无线信道并不像有线信道固定并可预见,而是具有很大的随机性,这就对接收机的设计提出了很大的挑战。在OFDM系统的相干检测中需要对信道进行估计,信道估计的精度将直接影响整个系统的性能。为了能在接收端准确的恢复发射端的发送信号,人们采用各种措施来抵抗多径效应对传输信号的影响,信道估计技术的实现需要知道无线信道的信息,如信道的阶数、多普勒频移和多径时延或者信道的冲激响应等参数。因此,信道参数估计是实现无线通信系统的一项关键技术。能否获得详细的信道信息,从而在接收端正确地解调出发射信号,是衡量一个无线通信系统性能的重要指标。因此,对于信道参数估计算法的研究是一项有重要意义的工作。

 

        所谓信道估计,就是从接收数据中将假定的某个信道模型的模型参数出来的过程。如果信道是线性的话,那么信道估计就是对系统冲激响应进行估计。需强调的是信道估计是信道对输入信号影响的一种数学表示,而“好”的信道估计则是使得某种估计误差最小化的估计算法。

 

        盲估计是指无须在发端传送已知的导频序列仅依据接收到的信号进行的空时信道估计。利用调制信号本身固有的、与具体承载信息比特无关的一些特征,或是采用判决反馈的方法来进行信道估计的方法。又称无先验知识估计。

 

 监督式学习

        我们首先来介绍我们的大儿子--监督式学习。它的个性单纯、踏实,大部分的事情我们必须先跟它解释够多遍,它才有足够的判断力做出相应的决定。

 

       举例来说,我们今天带着它来到公园,为了让他了解什么是植物,你指向榕树、矮树林、灌木丛与草地,看!这些都是植物,接着指着天空、汽车和房子说这些不是植物,带着它认识大部分的物件后,大儿子最终找到了规律(绿色、有根或叶),学会了如何判断什么是植物。

 

非监督式学习

       接着我们来介绍我们的第二个孩子--非监督式学习。它喜欢将看到的物件依照结构分门别类、划分成不同群组,当我们将一箱动物玩具放在它面前时,它很快就能够从中分出不同的小圈子,往往让人感到惊讶的是,我们事先并没有告诉它每只动物是属于哪种类别,它却可以透过观察将其分成有翅膀能够飞的、能在水中生活的或只能在路上爬的动物,有些甚至有它独特的分类方法是我们没有预想到的,这就是非监督式学习。我们不必透过监督,就可以从玩具中透过观察解析结构将数据做好分类。

 

最后我们对本文做个简单的总结:

 

监督式学习:数据已有标记,运用已标记数据来做训练。

非监督式学习:数据没有标记,从中找出拥有相同特征的数据群。

2.仿真效果预览

matlab2022a仿真结果如下:

 

非监督式信道估计——线性信道和非线性信道

 

盲信道估计在线性信道中的估计误差收敛曲线如下所示:

 

1.png

 

盲信道估计在非线性信道中的估计误差收敛曲线如下所示:

 

2.png

 

监督式信道估计——线性信道和非线性信道

 

监督式信道估计在线性信道中的估计误差收敛曲线如下所示:

 

3.png

 

监督式信道估计在非线性信道中的估计误差收敛曲线如下所示:

 

4.png

 

3.MATLAB核心程序 `for nn=1:1:SIM

    %开始监督循环

    while J > 1e-5%如果J大于某个误差,就继续循环

        E2            = E1;

        E1            = 0;

        P             = P+1;

        for m=L+1:1:M

            sum=0;

            for n=m-1:-1:m-L

                sum=sum+y(n)*w(m-n); %计算权值结果

            end

            e       = x(m-d)-sum; %计算误差

            u       = y(m-1:-1:m-L)';

            k       = q*u/(a+u'qu);

            q       =(1/a)(q-ku'*q);

            w       = w+k*e; %权值的更新

            E1      = E1+e*e;

            ee(m-L) = ee(m-L)+e.^2; %误差更新

            sb(m)   = sum;

        end

        E1 = E1/(M-L);

        J  = abs(E1-E2);%更新J

    end

end

ee=ee/SIM;

05_025_m`

`N     = 25000;%数据长度

SNRdB = 40; %信噪比

Lf    = 40; %延迟参数

Lh    = 5;%延迟参数

Dy    = round((Lf+Lh)/2);%延迟参数

%信道参数

h     = [0.407,0.815]; %信道参数

%产生随机的测试数据发送

M     = 4;

M     = M/2;

si    = floor(2Mrand(1,N))-M+4;

%调制

s     = exp(sqrt(-1)sipi/M);

%通过信道

x     = filter(h,1,s);

%归一

x     = x/max(x);

%产生随机的噪声

vn    = randn(1,N)+sqrt(-1)*randn(1,N);

vn    = vn*(10^(-SNRdB/20))/sqrt(2);

%加入噪声

x     = x+vn;

%一些中间临时变量的定义

Lp    = N-Lf;

X     = zeros(Lf+1,1);

e     = zeros(1,Lp);

w     = zeros(Lf+1,1);

w(Dy) = 1;

R2    = 2;

%学习参数

mu    = 0.001;

%忙均衡

for i=1:Lp

    X=x(i+Lf:-1:i).';

    yk=w'*X;

    e(i)=abs(yk)^2-R2;

    w=w-mu2e(i)X(yk)';

end

%根据忙估计得到的权值进行忙均衡

for i=1:Lp

    sb(i)=w'*x(i+Lf:-1:i).';

end;`