?? mapdecoder.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 + -