基于polar码和SCMA的多用户检测的联合检测译码matlab仿真,polar采用SCAN软译码,SCMA用MPA算法

news2024/12/29 11:13:37

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

       构造的核心是通过信道极化(channel polarization)处理,在编码侧采用方法使各个子信道呈现出不同的可靠性,当码长持续增加时,部分信道将趋向于容量近于1的完美信道(无误码),另一部分信道趋向于容量接近于0的纯噪声信道,选择在容量接近于1的信道上直接传输信息以逼近信道容量,是唯一能够被严格证明可以达到香农极限的方法。
       构造的核心是通过信道极化(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 Codes)是一种新型编码方式,也是3GPP标准制定中的一种候选编码技术方案,通过对华为极化码试验样机在静止和移动场景下的性能测试,针对短码长和长码长两种场景,在相同信道条件下,相对于Turbo码,可以获得0.3~0.6dB的误包率性能增益,同时,华为还测试了极化码与高频段通信相结合,实现了20Gbps以上的数据传输速率,验证了极化码可有效支持ITU所定义的三大应用场景。

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

      SCMA(Sparse Code Multiple Access,稀疏码分多址接入)技术是由华为公司所提出的第二个第五代移动通信网络全新空口核心技术,引入稀疏编码对照簿,通过实现多个用户在码域的多址接入来实现无线频谱资源利用效率的提升。SCMA码本设计是其核心,码本设计主要是两大部分:1.低密度扩频;2.高维QAM调制。将这两种技术结合,通过共轭、置换、相位旋转等操作选出具有最佳性能的码本集合,不同用户采用不同的码本进行信息传输。码本具有稀疏性是由于采用了低密度扩频方式,从而实现更有效的用户资源分配及更高的频谱利用;码本所采用的高维调制通过幅度和相位调制将星座点的欧式距离拉得更远,保证多用户占有资源的情况下利于接收端解调并且保证非正交复用用户之间的抗干扰能力。

2.仿真效果预览

matlab2013b仿真结果如下:

3.MATLAB核心程序

thod will use it
crc_size = 0;
[FZlookup,bitreversedindices,F_kron_n] = initPC(polar_N,polar_K,polar_n,construction_method,design_snr_dB,sigma,crc_size); 
 
alpha = 0.6;
iter_num = 5;
isInterleaver = 1;
 
load('codebook_6users_4chips_qpsk.mat','CB');
 
K = size(CB, 1); % number of orthogonal resources
M = size(CB, 2); % number of codewords in each codebook
V = size(CB, 3); % number of users (layers)
%polar initial and encoding
 
 
 
SCAN_ITER_NUM = 1;
N = polar_N/log2(M); %Number of scma symbols of each user
SNR  = EbN0 + 10*log10(polar_K/polar_N*log2(M)*V/K);
N0 = 1./10.^(SNR/10); % Noise variance
 
Nerr = zeros(1,length(EbN0));
Nbits = zeros(1,length(EbN0));
BER   = zeros(1, length(EbN0));
 
%maxNumErrs = 10000;
maxNumBits = 1e7; %total numer of bits
minNumBits = 50000;
minNumErrs = 50;
 
 
 
 
for iter_ebn0 = 1:length(EbN0)
 
    while ((min(Nerr(:,iter_ebn0)) < minNumErrs) && (Nbits(1,iter_ebn0) < maxNumBits) || (Nbits(1,iter_ebn0) <minNumBits) )%100 010 000
        infobits = randi([0 1],V,polar_K);
        c = zeros(V,polar_N);
        for user = 1:V
            c(user,:) = pencode(infobits(user,:),FZlookup,crc_size,bitreversedindices,F_kron_n); 
        end
        
        if isInterleaver ~= 0
            interleaver = zeros(V,polar_N);
            interleavered_bits = zeros(size(c));
            for ii = 1:V
                interleaver(ii,:) = randperm(polar_N);
                interleavered_bits(ii,:) = c(ii, interleaver(ii,:));
            end
            
        else
            interleavered_bits = c;
        end
        
        temp1 = reshape(interleavered_bits',polar_N*V,1);
        temp2 = reshape(temp1,log2(M),N*V);
        x_temp = bi2de(temp2',log2(M),'left-msb');
        x = reshape(x_temp,N,V);
        x = x';
        %h = 1/sqrt(2)*(randn(K, V, N)+1j*randn(K, V, N)); % Rayleigh channel
        h = ones(K, V, N);
        %h = 1/sqrt(2)*(repmat(randn(1, V, N), K, 1)+1j*repmat(randn(1, V, N), K, 1));
        s = scmaenc(x, CB, h); 
        y = awgn(s, SNR(iter_ebn0),'measured');
        
        %Factor graph calculation
        
        
        
        mhat_llr = JIDD(y,polar_N,polar_K,FZlookup,K,V,M,N,CB,N0(iter_ebn0),h,iter_num,isInterleaver,interleaver,alpha);
        
        %**********************************************************
        llr = reshape(mhat_llr',1,V*polar_K);
        m_reshape = reshape(infobits', 1, polar_K*V);
        m_hat = llr<0;
        err = sum(m_hat~=m_reshape);
        Nerr(iter_ebn0) = Nerr(iter_ebn0) + err;
        Nbits(iter_ebn0) = Nbits(iter_ebn0) + length(m_reshape);     
    end
    
    BER(iter_ebn0) = Nerr(iter_ebn0)/Nbits(iter_ebn0);	
	
    fprintf('EbN0 is %d, have runned %d bits, found %d errors, BER=%.7f \n',EbN0(iter_ebn0),Nbits(iter_ebn0),Nerr(iter_ebn0),BER(iter_ebn0));
   
    
    
end
A139

4.完整MATLAB

V

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/108385.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】初阶习题

目录 1.图案问题 2、时分秒转换 3、打印1-100之间所有3的倍数的数字 4、打印100~200之间的素数 5、给定两个数&#xff0c;求这两个数的最大公约数 6、在屏幕上输出9*9乘法口诀表 7、计算1/1-1/21/3-1/41/5 …… 1/99 - 1/100 的值&#xff0c;打印出结果 8、二分查找 …

说明DBCO-PEG-SH二苯并环辛炔-聚乙二醇-巯基科研试剂材料,DBCO-PEG-SH结构式

结构式 英文&#xff1a;DBCO-PEG-SH&#xff0c;DBCO-PEG-Thiol 中文&#xff1a;二苯并环辛炔-聚乙二醇-巯基 溶剂&#xff1a;溶于水、DMSO等常规有机溶剂 性状&#xff1a;液体/固体白色或淡黄色粉末&#xff0c;取决于分子量 用途范围&#xff1a;广泛应用于医药、生物…

一文搞懂Linux下并制作环形缓冲区

1.环形缓冲区log_buf[]又是存在内核的哪个文件呢&#xff1f; 位于/proc/kmsg里,所以除了dmesg命令查看,也可以使用cat /proc/kmsg来查看 2.但是,dmesg命令和cat /proc/kmsg有所不同 2.1 dmesg命令 每次使用,都会打印出环形缓冲区的所有信息 2.2 cat /proc/kmsg 只会打印…

项目管理中,进度计划是摆设吗?

1、忽视进度计划 项目管理中&#xff0c;有的人认为进度计划是摆设&#xff0c;不重视计划&#xff0c;只是为了满足合同工期&#xff0c;做给客户看&#xff0c;因此草率的编制进度计划。 在通过客户要求后&#xff0c;就将计划搁置在一边&#xff0c;这就导致后期在执行任务…

科班演员陶奕菱亮相海南电影节:人生没有白走的路,每一步都算数

今天的记忆是带着海水的味道………”12月18日&#xff0c;在年末岁尾之际&#xff0c;徽风皖韵熏陶下成长的新生代演员陶奕菱再次来到海南三亚&#xff0c;受邀参加第四届海南岛国际电影节&#xff0c;迫不及待地跑向沙滩面朝大海&#xff0c;感受多姿多彩的魅力三亚。 优雅端…

Java对象内存布局和对象头

对象的内存布局 在HotSpot虚拟机里&#xff0c;对象在堆内存中的存储布局可以划分为三个部分&#xff1a;对象头&#xff08;Header&#xff09;、实例数据&#xff08;Instance Data&#xff09;和对齐填充&#xff08;Padding&#xff09;。 对象头 对象头由对象标记Mark W…

进程间通信

进程间通信 进程间通信是不同进程之间的信息传输或交换。在不同的过程中&#xff0c;双方可以访问哪些媒体&#xff1f;进程的用户空间相互独立。一般来说&#xff0c;他们不能互相接触。唯一的例外是共享内存区域。此外&#xff0c;系统空间是一个“公共场所”&#xff0c;所…

【OFDM系列8】对知乎“正交频分复用(OFDM)原理灵魂9问”的理解与通俗易懂回答(慎入,含大量重要公式详细推导的万字长文)

前段时间,在知乎上看到一篇文章: 正交频分复用(OFDM)原理 文中博主提出了关于OFDM的九个问题,看了之后感觉这些问题的确深入OFDM本质,仔细思考可以很好地加深对OFDM这种较为复杂的调制方式的理解,下面谈一谈本人粗浅的一些理解和粗浅的认识,如有不准确或不恰当之处,欢…

电脑里一辈子都不想删的神仙软件

&#x1f4c2;目录&#x1f388;前言一、浏览器&#xff1a;Chrome新版Edge二、motrix-全能下载器三、压缩软件&#xff1a;WinRAR四、Quicker(更快)五、视频播放器&#xff1a;Potplayer六、listary七、清理工具&#xff1a;Dism八、199it九、PPT排版&#xff1a;iSlide十、 S…

jQuery 动画

文章目录jQuery 动画概述显示和隐藏动画show() 和 hide()toggle()淡入和淡出动画fadeIn() 和 fadeOut()fadeToggle()fadeTo()滑上和滑下动画slideUp()和slideDown()slideToggle()自定义动画简单动画jquery.color.js累积动画回调函数队列动画取消动画延迟动画jQuery 动画 概述 …

程序设计中的耦合类型

一个庞大的系统中&#xff0c;分布着许多子系统&#xff0c;子系统中包含许多包&#xff0c;包中又有数不清的类。自类往上&#xff0c;有数不清的调用关系&#xff0c;一旦两个或多个对象&#xff08;包括类、包、模块、系统等&#xff09;之间发生关系&#xff08;这里我们可…

提升 5-7 倍速,使用 Mac M1 芯片加速 Pytorch 完全指南

2022年5月&#xff0c;PyTorch官方宣布已正式支持在M1芯片版本的Mac上进行模型加速。官方对比数据显示&#xff0c;和CPU相比&#xff0c;M1上炼丹速度平均可加速7倍。 哇哦&#xff0c;不用单独配个GPU也能加速这么多&#xff0c;我迫不及待地搞到一个M1芯片的MacBook后试水了…

CISCO 服务器配置 RAID 指南及安装操作系统

开机后看屏幕出现下图后按 Ctrlm 进入 RAID 配置主页 下图为 RAID 主页. 首先创建一个新的配置. 按SPACE选择要加入的硬盘&#xff0c;然后按F10确定 选择 SPAN-1 选择RAID级别&#xff0c;读写策略... 完成以上步骤后按YES保存配置 选择 Initialize 初始化硬盘 选择YES确定&a…

zabbix添加一个ubuntu受监控主机

ubuntu版本18.04 LTS 安装一个zabbix-agent,命令如下: sudo apt install zabbix-agent 安装成功后编辑zabbix-agent配置文件 vim /etc/zabbix/zabbix_agentd.conf Server: 被动模式访问的zabbix-server的ip ServerActive: 主动模式访问的zabbix-server的ip StartAgent…

实验三 多层神经网络

一、实验目的 &#xff08;1&#xff09;学习并掌握常见的机器学习方法&#xff1b; &#xff08;2&#xff09;能够结合所学的python知识实现机器学习算法&#xff1b; &#xff08;3&#xff09;能够用所学的机器学习算法解决实际问题。 二、实验内容与要求 &#xff08…

Android | Activity 启动流程分析

前言 Activity 类是 android 应用的关键组件&#xff0c;在日常开发中&#xff0c;绝对少不了组件。既然用了这么久&#xff0c;你知道他的启动流程&#x1f434;&#xff1f;作为一个应用层开发者&#xff0c;大多数人可能觉得学习这些对日常开发可能没有太大帮助。但是多了解…

P3386 【模板】二分图最大匹配——匈牙利算法

【模板】二分图最大匹配 题目描述 给定一个二分图&#xff0c;其左部点的个数为 nnn&#xff0c;右部点的个数为 mmm&#xff0c;边数为 eee&#xff0c;求其最大匹配的边数。 左部点从 111 至 nnn 编号&#xff0c;右部点从 111 至 mmm 编号。 输入格式 输入的第一行是三…

文件描述符表、文件结构表和文件节点(SylixOS 学习笔记-更新中)

文件描述符表、文件结构表和文件节点 文件描述符表&#xff1a;每个进程都维护着自己的一个文件描述符表&#xff0c;每个文件描述符占其中一。该表记录进程打开的文件相关信息&#xff0c;因文件描述符为进程所有&#xff0c;文件描述符表也为进程内共享&#xff1b;文件表结构…

CDGA|把握三个“着眼点”,实现数据要素治理市场高质量发展

12月19日&#xff0c;国家发改委发文解读《意见》时指出&#xff0c;数据要素安全治理作为数据基础制度的四大组成部分之一&#xff0c;贯穿数据流通交易的各个环节&#xff0c;涉及数据要素市场培育的方方面面&#xff0c;发挥着不可替代的重要作用既有利于保障国家数据安全&a…

视频网站节约 30% 成本的秘密在这里

今年&#xff0c;爱奇艺宣布2022年第一季度首次实现季度盈利&#xff0c;这是爱奇艺在过去三个季度中&#xff0c;毛利率持续增长&#xff0c;且运营费用持续下降带来的结果。长视频行业发展十几年来&#xff0c;一直深陷亏损旋涡。爱奇艺的首次实现季度盈利&#xff0c;也意味…