• 大小: 338KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-02-06
  • 语言: 其他
  • 标签: SCMA  Sphere  decod  

资源简介

包含了SCMA整个系统的仿真,还与球形解码相关内容,对于初学者有一定帮助。

资源截图

代码片段和文件信息

% HuaWei 5G非正交多址方案SCMA仿真
clear;
rng(3);

frame_num = 1000;
iter_num = 10;   % 3~15
M = 2;          % 2/3/4

S = [
    1 1 1 0 0 0
    2 0 0 1 1 0
    0 2 0 2 0 1
    0 0 2 0 2 2];                  % SCMA签名矩阵

% 调制图案
switch M
    case 2
        mod_map = [1 1; 1 -1; -1 1; -1 -1]/sqrt(2);
    case 3
        mod_map = [1 0; 0 1; 0 -1; -1 0];
    case 4
        mod_map = [1+1i 1+1i; 1-1i 1-1i; -1+1i -1+1i; -1-1i -1-1i]/2;
end

N = 4;                             % 校验节点数量
K = 6;                             % 信息节点数量
sigma2 = 1;
search_space = fullfact([4 4 4]);  % 全搜索空间
search_depth = 4*4*4;              % 搜索空间大小

err_tb_cnt = 0;
for frame_id = 1:frame_num
    
    frame_id
    
    user_num = 6;
    snr = randi([4 20] user_num 1);
    h = sqrt(db2pow(snr)).*exp(1i*2*pi*rand(user_num1));  % 随机生成信道
    
    tx_data = 0;
    for ueid = 1:user_num
        index(ueid) = randi([1 4]);
        data = mod_map(index(ueid):);
        tmp = zeros(41);
        tmp(S(:ueid)==1) = data(1);
        tmp(S(:ueid)==2) = data(2);
        tx_data = tx_data + h(ueid)*tmp;
    end
    
    y = awgn(tx_data 0);      % AWGN信道
    
    Q = 1/4*ones(NK4);       % 初始化信息节点到校验节点的传递信息
    R = 1/4*ones(NK4);       % 初始化校验节点到信息节点的传递信息
    
    for iter = 1:iter_num
        for n = 1:N
            k = find(S(n:)~=0);
            tone_idx = S(nk);
            tmp_h = h(k);
            p = zeros(search_depth 1);
            for m = 1:search_depth
                x = diag(mod_map(search_space(m:) tone_idx)).‘*tmp_h;
                p(m) = Q(nk(1)search_space(m1)) ...
                    * Q(nk(2)search_space(m2)) ...
                    * Q(nk(3)search_space(m3)) ...
                    * 1/(pi*sigma2)*exp(-abs(y(n)-x)^2/sigma2);
            end
            p = p/sum(p);
            
            for ii = 1:3
                for m = 1:4
                    idx1 = search_space(:ii)==m;
                    R(nk(ii)m) = sum(p(idx1));
                end
            end
        end
        
        for k = 1:K
            for n = 1:N
                flag = S(:k)~=0;
                flag(n) = 0;       % 去掉本校验节点
                p = zeros(41);
                p(1) = prod(R(flagk1));
                p(2) = prod(R(flagk2));
                p(3) = prod(R(flagk3));
                p(4) = prod(R(flagk4));
                p = p/sum(p);
                Q(nk:) = p;
            end
        end
    end
    
    tmp = prod(R);
    [~result] = max(tmp [] 3);
    
    err_tb_cnt = err_tb_cnt + ~all(index==result);
end

err_tb_cnt


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    .......      2747  2017-10-25 19:31  scma\main.m

     文件         56  2017-01-11 14:15  scma\scma-master\.gitignore

     文件        298  2017-01-11 14:15  scma\scma-master\log_sum_exp.m

     文件       2665  2017-01-11 14:15  scma\scma-master\README.md

     文件       3365  2017-01-11 14:15  scma\scma-master\scmadec.m

     文件        837  2017-01-11 14:15  scma\scma-master\scmaenc.m

     文件       3677  2017-01-11 14:15  scma\scma-master\simulation.m

     文件       2625  2016-02-25 15:38  scma\SCMA_learn\BCJR.m

     文件       2039  2016-02-25 15:38  scma\SCMA_learn\BCJR_maxlog.m

     文件       2912  2016-02-25 15:38  scma\SCMA_learn\BCJR_maxlog_c.c

     文件      11264  2016-02-25 15:38  scma\SCMA_learn\BCJR_maxlog_c.mexw64

     文件     183296  2016-02-25 15:38  scma\SCMA_learn\BCJR_maxlog_c.mexw64.pdb

     文件       2912  2016-02-29 15:14  scma\SCMA_learn\BCJR_maxlog_check_c.c

     文件      11264  2016-02-29 15:14  scma\SCMA_learn\BCJR_maxlog_check_c.mexw64

     文件       2912  2016-02-29 15:14  scma\SCMA_learn\BCJR_maxlog_cheinter_c.c

     文件      11264  2016-02-29 15:14  scma\SCMA_learn\BCJR_maxlog_cheinter_c.mexw64

     文件        198  2016-02-25 15:38  scma\SCMA_learn\BER_user.mat

     文件        485  2015-12-23 16:28  scma\SCMA_learn\convcorr.m

     文件        463  2015-12-29 15:33  scma\SCMA_learn\lte_turbocode_rsc.m

     文件       7667  2016-03-01 09:04  scma\SCMA_learn\main.m

     文件       4096  2016-02-25 15:38  scma\SCMA_learn\maxlog_MPA_decode.m

     文件       7986  2016-02-25 15:38  scma\SCMA_learn\maxlog_MPA_decode_c.c

     文件      13312  2016-02-25 15:38  scma\SCMA_learn\maxlog_MPA_decode_c.mexw64

     文件     183296  2016-02-25 15:38  scma\SCMA_learn\maxlog_MPA_decode_c.mexw64.pdb

     文件      15771  2015-12-31 09:04  scma\SCMA_learn\MPA turbo 1000frames 1024bit.fig

     文件      22314  2016-02-25 15:38  scma\SCMA_learn\MPA&maxlogMPA 300_5.fig

     文件      11476  2015-11-27 09:35  scma\SCMA_learn\MPA&maxlog_MPA.fig

     文件       3377  2016-01-05 10:43  scma\SCMA_learn\MPA_decode.m

     文件       7671  2016-02-25 15:38  scma\SCMA_learn\MPA_decode_c.c

     文件      15872  2016-02-25 15:38  scma\SCMA_learn\MPA_decode_c.mexw64

............此处省略40个文件信息

评论

共有 条评论