m基于matlab的polar码误码率仿真,译码算法采用SC算法

这篇具有很好参考价值的文章主要介绍了m基于matlab的polar码误码率仿真,译码算法采用SC算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.算法仿真效果

2.MATLAB核心程序

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

4.完整MATLAB


1.算法仿真效果

matlab2022a仿真结果如下:

m基于matlab的polar码误码率仿真,译码算法采用SC算法

2.MATLAB核心程序

.........................................................................
n          = 7;%128
N          = 2^n;  
[Vals,Inds]= func_rates(n,0.5);

for i=1:length(SNR)

    %设置误码率参数
    Bit_err(i)    = 0; 
    Num_err       = 0; 
    %误码率累加器
    Numbers       = 0; 
    K             = round(rate*N);
    frozen_pos    = Inds(1:N-K);
    free_pos      = sort(Inds(N-K+1:N),'ascend');
    z             = ones(N,1);
    z(frozen_pos) = 0;
    sigma         = 1/sqrt(10^(SNR(i)/10));
    
    while Num_err <= LENS(i) 
          fprintf('SNR = %f\n', SNR(i));
          Num_err
          data_in     = randsrc(K,1,[0 1]);
          u           = zeros(N,1);
          u(free_pos) = data_in; 
          x           = func_encode(u);
          Trans_BPSK  = 2*x-1;

          Rec_sd_1               = Trans_BPSK + sigma*randn(N,1);
          Rec_sd                 = Rec_sd_1;

          %接收端
          y2                     = Rec_sd;
          L2                     = exp(-2*y2); 
          v2                     = func_SCdecoder(L2,z);
          data_out2              = v2(free_pos);
 

          nberr1      = length(find(data_out2~=data_in'));
 
          Num_err     = Num_err+nberr1;
          Numbers     = Numbers+1;
    end
    Bit_err(i) = Num_err/(length(data_in)*Numbers);
end


if rate==0.6
   save R2_6.mat SNR Bit_err   
end
if rate==0.5
   save R2_5.mat SNR Bit_err   
end
if rate==0.4
   save R2_4.mat SNR Bit_err   
end



figure;
semilogy(SNR,Bit_err,'b-o','linewidth',1);
xlabel('SNR per bit rS-D(dB)');
ylabel('Bit error rate(BER)');
grid on; 
14_027_m

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


        极化码(英语:Polar code)是一种前向错误更正编码方式,用于讯号传输。构造的核心是通过信道极化(channel polarization)处理,在编码侧采用方法使各个子信道呈现出不同的可靠性,当码长持续增加时,部分信道将趋向于容量近于1的完美信道(无误码),另一部分信道趋向于容量接近于0的纯噪声信道,选择在容量接近于1的信道上直接传输信息以逼近信道容量,是唯一能够被严格证明可以达到香农极限的方法。
        极化码(英语:Polar code)是一种前向错误更正编码方式,用于讯号传输。构造的核心是通过信道极化(channel polarization)处理,在编码侧采用方法使各个子信道呈现出不同的可靠性,当码长持续增加时,部分信道将趋向于容量近于1的完美信道(无误码),另一部分信道趋向于容量接近于0的纯噪声信道,选择在容量接近于1的信道上直接传输信息以逼近信道容量,是唯一能够被严格证明可以达到香农极限的方法。
        在解码侧,极化后的信道可用简单的逐次干扰抵消解码的方法,以较低的复杂度获得与最大似然解码相近的性能。2008年在国际信息论ISIT会议上,土耳其毕尔肯大学埃尔达尔·阿里坎(Erdal Arıkan)教授首次提出了这个信道极化的概念,基于该理论,他给出了人类已知的第一种能够被严格证明达到信道容量的信道编码方法,并命名为极化码华为2016宣布4月份率先完成中国IMT-2020(5G)推进组第一阶段的空口关键技术验证测试,在5G信道编码领域全部使用极化码,2016年11月17日国际无线标准化机构3GPP第87次会议在美国拉斯维加斯召开,中国华为主推PolarCode(极化码)方案,美国高通主推低密度奇偶检查码(LDPC)方案,法国主推Turbo2.0方案,最终控制信道编码由极化码胜出。 

      Polar码的主要思想是将多个子信道合并成一个等效信道,然后将等效信道分裂成多个信道容量呈两极分化(信道容量接近0或者1)的子信道,最后将信息在信道容量接近1的无噪子信道发送信息,而在信道容量接近0的子信道上发送收发已知的比特信息,从而提高信息传输的可靠性。
       Polar码的极化过程主要由两步来完成,第一步:信道联合;第二步:信道分裂。下面对这两步进行简单介绍
m基于matlab的polar码误码率仿真,译码算法采用SC算法

m基于matlab的polar码误码率仿真,译码算法采用SC算法 

        极化码的译码基本方法主要有:连续消除(Successive Cancellation, SC) 译 码 、 置 信 传 播 (Belief Propagation, BP) 译 码 、 线 性 规 划 (Linear Programming, LP) 译 码 、 基 于 SC 列 表 (Successive Cancellation List, SCL)译码、最大似然(Maximum Likelihood, ML)译码等。 

4.完整MATLAB

V文章来源地址https://www.toymoban.com/news/detail-497695.html

到了这里,关于m基于matlab的polar码误码率仿真,译码算法采用SC算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包