⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multi_dete.m

📁 迭代多用户检测的MATLAB详细实现,非常全面,主要基于Vincent Poor和王晓东提出的算法实现,绝对的好东西.
💻 M
字号:
function L_out=multi_dete(rec,L_a,sigma)

[K,n]=size(rec);
nstate=2^(K-1);
%R=eye(K);
R=(0.3*ones(K)+0.7*eye(K));
A=eye(K);
for l=1:n
for j=1:K
    temp_1=0.0;
    temp_0=0.0;
    for i=1:nstate
        bj=bin_state(i-1,K-1);
        bj=2*bj-1;
        temp=1.0;
        for m=1:j-1
          temp=temp*(1+bj(m)*tanh(rec(m,l)/sigma/sigma))*(1+bj(m)*tanh(L_a(m,l)/2));
        end
        
        for m=j+1:K
          temp=temp*(1+bj(m-1)*tanh(rec(m,l)/sigma/sigma))*(1+bj(m-1)*tanh(L_a(m,l)/2));
        end
        
    if ((j<K)&&(j>1))
        b_minus=[bj(1:j-1) -1 bj(j:K-1)];
        b_positive=[bj(1:j-1) 1 bj(j:K-1)];
    elseif (j==K)
        b_minus=[bj(1:K-1) -1 ];
        b_positive=[bj(1:K-1) 1];
    elseif (j==1)
        b_minus=[-1 bj(1:K-1) ];
        b_positive=[1 bj(1:K-1) ];
    end
        temp_1= temp_1+exp(-b_positive*A*R*A*b_positive'/(2*sigma*sigma))*temp;
        temp_0= temp_0+exp(-b_minus*A*R*A*b_minus'/(2*sigma*sigma))*temp;
    end
    if temp_0==0.0
        temp_0=1e-100;
    end
    L_out(j,l)=2.0*rec(j,l)/(sigma*sigma)+log(temp_1/temp_0);
end
    
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -