首页 > 编程语言 >m基于MIMO通信系统的半盲信道估计算法matlab仿真,包括QPSK,ML检测,Turbo编译码等

m基于MIMO通信系统的半盲信道估计算法matlab仿真,包括QPSK,ML检测,Turbo编译码等

时间:2023-05-18 23:45:49浏览次数:36  
标签:QPSK end 导频 ML 算法 半盲 信道 估计 tmp1

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

 

 

 

 

 

 

 

2.算法涉及理论知识概要

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

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

 

      信道估计算法从输入数据的类型来分,可以划分为时域和频域两大类方法。频域方法主要针对多载波系统;时域方法适用于所有单载波和多载波系统,其借助于参考信号或发送数据的统计特性,估计衰落信道中各多径分量的衰落系数。从信道估计算法先验信息的角度,则可分为以下三类:

(1) 基于参考信号的估计。该类算法按一定估计准则确定待估参数,或者按某些准则进行逐步跟踪和调整待估参数的估计值。其特点是需要借助参考信号,即导频或训练序列。基于训练序列和导频序列的估计统称为基于参考信号的估计算法。

基于训练序列的信道估计算法适用于突发传输方式的系统。通过发送已知的训练序列,在接收端进行初始的信道估计,当发送有用的信息数据时,利用初始的信道估计结果进行一个判决更新,完成实时的信道估计。基于导频符号的信道估计适用于连续传输的系统。通过在发送的有用数据中插入已知的导频符号,可以得到导频位置的信道估计结果;接着利用导频位置的信道估计结果,通过内插得到有用数据位置的信道估计结果,完成信道估计

(2) 盲估计。利用调制信号本身固有的、与具体承载信息比特无关的一些特征,或是采用判决反馈的方法来进行信道估计的方法。

(3) 半盲估计。结合盲估计与基于训练序列估计这两种方法优点的信道估计方法。

      一般来讲,通过设计训练序列或在数据中周期性地插入导频符号来进行估计的方法比较常用。而盲估计和半盲信道估计算法无需或者需要较短的训练序列,频谱效率高,因此获得了广泛的研究。但是一般盲估计和半盲估计方法的计算复杂度较高,且可能出现相位模糊(基于子空间的方法)、误差传播(如判决反馈类方法)、收敛慢或陷入局部极小等问题,需要较长的观察数据,这在一定程度上限制了它们的实用性。

 

 

 

 

 

 

 

 

3.MATLAB核心程序

 

M            = 10;
%Loop until the job is killed or until the SNR or BER target is reached.
 
MTKL         = 200;
Berrs1       = zeros(M,MTKL);
Berrs2       = zeros(M,MTKL);
for mk = 1:MTKL
    mk
    MSE  = [];
    MCE  = [];
    for NT = NTS
        SNR         = SNRset;
        %Convert from SNR (in dB) to noise power spectral density.
        N0          = 1/(10^(SNR/10));
        error_count = 0;
        bit_count   = 0;
        %semi-blind channel estimation
        H_length    = 1;                     
        fm          = 50;                          
        fs          = 1e4;                        
        B           = fir1(1023,fm/(fs/2));   
        n_I         = randn(nTx*nRx,H_length);
        n_Q         = randn(nTx*nRx,H_length);
        a_I         = filter2(B,n_I);
        a_Q         = filter2(B,n_Q);
 
        Rayleigh_fading = 1/sqrt(2)*[a_I+j*a_Q]; 
        H               = reshape(Rayleigh_fading,[nRx,nTx,H_length]);
        iteration_index = 0;
        ii              = 1;
        %generating the training bits
.....................................................................
 
        n                = 1/sqrt(2)*[randn(nRx,NT(ii)) + j*randn(nRx,NT(ii))];                  
        %received training signal Y
        Y                = H*training_block+10^(-SNR/20)*n;
        %Least square channel estimation
        H_hat            = Y*training_block'*inv(training_block*training_block');
 
        number_iteration = M;
        H_updated_hat    = H_hat;   
 
        A     = [];
        J     = [];
        S_Hat = [];
..................................................................
            tmps                 = abs(H_updated_hat-H);
            MSE(iteration_index) = mse(tmps(:));
            MCE(iteration_index) =(1/(nTx*nRx))*sum(sum((abs(H_updated_hat-H).^2)));
        end
    end
    Berrs1(:,mk) = MSE;
    Berrs2(:,mk) = MCE;
end
for i = 1:M
    tmp1      = Berrs1(i,:);
    tmp2      = Berrs2(i,:);
    INDX1 = [];
    INDX2 = [];
    for j = 1:length(tmp1)
        if isnan(tmp1(j)) == 1
           INDX1 = [INDX1,j];
        end
        if tmp1(j) > 1000
           INDX1 = [INDX1,j];
        end
    end
    for j = 1:length(tmp2)
        if isnan(tmp2(j)) == 1
           INDX2 = [INDX2,j];
        end
        if tmp2(j) > 1000
           INDX2 = [INDX2,j];
        end
    end    
    tmp1(INDX1) = [];
    tmp2(INDX2) = [];
    Bersf1(i) = sqrt(mean(tmp1));
    Bersf2(i) = mean(tmp2);
end
figure;        
semilogy(1:M,Bersf1,'b-o');
xlabel('number of iterations');
ylabel('MSE');
grid on
 
figure;        
semilogy(1:M,Bersf2,'b-o');
xlabel('number of iterations');
ylabel('MCE');
grid on

 

  

 

标签:QPSK,end,导频,ML,算法,半盲,信道,估计,tmp1
From: https://www.cnblogs.com/51matlab/p/17413636.html

相关文章

  • html基础
    一、div样式1、style设置css样式(扩展了解style标签)2、align设置div盒子内的内容居中、居左、居右3、id 引人外部对应#(井号)选择符号样式4、class 引人外部对应.(句号)选择符号样式5、title设置div(标题)鼠标经过时显示文字(扩展了解 title标签)3、id案例<!DOCTYPEhtml......
  • html+css重点内容
    复习yuanhtml1.web组成html-结构层css-表现层js-行为交互2.html:标签元素标记分类:单标签:<标签名:属性=“属性值”属性=“属性值”>/加不加都可以 双标签:<标签名:属性=“属性值”></标签名> 常用单标签:brhrimginput 常用双标签:divph6-h1spana3.元素类型: ......
  • wpf XAML 设计器异常,提示NullReferenceException 未将对象引用设置到对象
     在cs构造函数里手动注册,并且在控件的构造函数里增加判断if(DesignerProperties.GetIsInDesignMode(this)){return;}//在这里才注册Load事件cmbSpeed.Loaded+=cmbSpeed_Loaded;来源:https://www.cnblogs.com/zsx-blog/p/8311633.html ......
  • Postman+Newman生成HTML接口测试报告
    NewMan是官方提供的专门用于posman进行自动化的命令行工具环境配置:Node.js:Newman是基于Node.js,所以安装NewMan之前需要保证本地有安装Node.jsNewMan:npminewman-g,安装成功后输入newman-v来检查版本,显示出版本即表示安装成功html格式报告的插件:npminstall-gnewman......
  • HTML属性 分为两种Property 固有属性Attribute 自定义属性
    HTML属性 分为两种Property固有属性Attribute自定义属性。固有属性就是浏览器给默认给html标签绑定上的属性。 操作固有属性固有属性可以通过对象.属性名这样方式来设置和获取值。什么是自定义属性自定义属性就是用户自己定义,在固有属性列表中没有的属性。获取自定义......
  • Html中使用jquery通过Ajax请求WebService接口以及跨域问题解决
    场景VS2019新建WebService/Web服务/asmx并通过IIS实现发布和调用:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130743584在上面实现发布WebService的基础上,怎样在html中通过jquery对接口发起请求和解析数据。注:博客:https://blog.csdn.net/badao_liumang_qiz......
  • IDEA/WEBSTORM配置静态的html,提供给同一局域网访问
    配置端口和勾选不信任的链接 配置Deployment 最重要的一步:重启IDE访问配置的链接即可,可以把localhost改成本机的ip,供同一局域网的人使用了。 ......
  • YAML Ain't Markup Language
    YML(或YAML)是一种轻量级的标记语言,它是一种易于阅读且易于编写的数据序列化格式。YML的全称是YAMLAin'tMarkupLanguage,也就是说它的作者并不希望它被视为一种标记语言,而更多地是一种“人类可读的数据序列化格式”。YML的语法简洁明了,它使用缩进表示层级结构,可以用于描述键值对......
  • .gitlab-ci.yml 语法错误导致 runner 报错“expected shallow list”
    报错信息:Runningwithgitlab-runner15.11.0(xxx)ongitrunnrxxx,systemID:s_xxxPreparingthe"shell"executor00:00Preparingenvironment00:00GettingsourcefromGitrepository00:01Fetchingchangeswithgitdepthsetto20...Reinitializ......
  • Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271)
    参考:https://github.com/vulhub/vulhub/blob/master/weblogic/CVE-2017-10271/README.md反弹shellEXP:POST/wls-wsat/CoordinatorPortTypeHTTP/1.1Host:172.31.14.123:7001Accept-Encoding:gzip,deflateAccept:*/*Accept-Language:enUser-Agent:Mozilla/5.0(com......