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

📄 mapdecoder.m

📁 safsdrghfydjg kukugilihg b nmvhjtdyewrtwert
💻 M
字号:
function [LC,LD]=MAPDecoder(La,SP,SM,PS,NS,OP)

% La : K*w = A Priori LLR matrix.
% LC : K*w = A Posteriori LLR matrix of code bits.
% LD : K*1 = A Posteriori LLR matrix of data bits.
% SP(j,:,:) : (variable)*2 = set of state pairs (s',s) in which the 'j' bit of codeword is +1. 
% SM(j,:,:) : (variable)*2 = set of state pairs (s',s) in which the 'j' bit of codeword is -1. 
% P : K*w*N*2 = Code bit probability P[b(t,i,s',s)] only for valid state
% pairs.
% AL : N*(K+1) = Forward state metric matrix.
% BE : N*(K+1) = Backward state metric matrix.

N=length(PS);
s=size(La);
K=s(1);
w=s(2);

for i=1:K
    for k=1:w
        for n=1:N
            for j=1:2
                P(i,k,n,j)=Probability(k,n,NS(n,j),PS,NS,OP,La(i,k));
            end
        end
    end
end

AL(1,1)=1;
AL(2:N,1)=0;
for i=2:K+1
    for j=1:N
        AL(j,i)=0;
        for k=1:N
            AL(j,i)=AL(j,i) + AL(k,i-1)*JProbability(i-1,w,k,j,PS,NS,OP,P);
        end
    end
    C(i-1)=(sum(AL(:,i)))^-1;
    AL(:,i)=C(i-1)*AL(:,i);
end

BE(:,K+1)=AL(:,K+1);

for i=K:-1:1
    for j=1:N
        BE(j,i)=0;
        for k=1:2
            BE(j,i)=BE(j,i) + BE(NS(j,k),i+1)*JProbability(i,w,j,NS(j,k),PS,NS,OP,P);
        end
    end
    if(i==1)
        sf=1;
    else
        sf=C(i-1);
    end
    BE(:,i)=sf*BE(:,i);
end

for n=1:w
    s=size(SP);
    r=size(SM);
    mp=TD2mat(SP,n,s(2),s(3));
    mm=TD2mat(SM,n,r(2),r(3));
    s=size(mp);
    r=size(mm);
    for i=1:K
        Nu=0;
        De=0;
        for j=1:s(1)
            Nu= Nu + AL(mp(j,1),i)*BE(mp(j,2),i+1)*JProbability(i,w,mp(j,1),mp(j,2),PS,NS,OP,P);
        end
        for j=1:r(1)
            De= De + AL(mm(j,1),i)*BE(mm(j,2),i+1)*JProbability(i,w,mm(j,1),mm(j,2),PS,NS,OP,P);
        end
        
        LC(i,n)=log(Nu/De);
    end
end

for i=1:K
    Nu=0;
    De=0;
    for j=1:N
        Nu = Nu + AL(j,i)*BE(NS(j,2),i+1)*JProbability(i,w,j,NS(j,2),PS,NS,OP,P);
        De = De + AL(j,i)*BE(NS(j,1),i+1)*JProbability(i,w,j,NS(j,1),PS,NS,OP,P);
    end
    LD(i)=log(Nu/De);
end

⌨️ 快捷键说明

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