111
Ld_dia_esq = zeros(n1,n2,n3);
for z=1:n3
for i=2:n1
Ld_dia_esq(:,1,z) = [diag(Ldpd(:,:,z),0)];
Ld_dia_esq(:,i,z) = [diag(Ldpd(:,:,z),(i-
1));diag(Ldpd(:,:,z),(i-(n1+1)))];
end
end
% Re-ordenando a Lc no sentido da diagonal esquerda
for z=1:n3
for i=2:n1
Lc_dia_esq(:,1,z) = [diag(Lc(:,:,z),0)];
Lc_dia_esq(:,i,z) = [diag(Lc(:,:,z),(i-1));diag(Lc(:,:,z),(i-
(n1+1)))];
end
end
Ld_dia_esq_ext = [Ld_dia_esq ; rec_blk_par_esq]; % Ld recebe o vetor
paridade diagonal esquerda na ultima linha
Lc_dia_esq_ext = [Lc_dia_esq ; rec_blk_par_esq]; % Lc recebe o vetor
paridade diagonal esquerda na ultima linha
% Calculo da informacao extrinseca na paridade diagonal a esquerda
for z=1:n3
for i=1:n1+1
for j=1:n1
Le_dia_esq_ext(i,j,z)=2*atanh( ( prod( tanh( (
Ld_dia_esq_ext(:,j,z) + Lc_dia_esq_ext(:,j,z) )/2 ),1 ) * 1/( tanh( (
Ld_dia_esq_ext(i,j,z) + Lc_dia_esq_ext(i,j,z) )/2 ) ) ) );
if Le_dia_esq_ext(i,j,z)==Inf
Le_dia_esq_ext(i,j,z)=100;
elseif Le_dia_esq_ext(i,j,z)==-Inf
Le_dia_esq_ext(i,j,z)=-100;
end
end
end
end
Le_dia_esq = Le_dia_esq_ext(1:n1,:,:); % Encurtando a Le diagonal para
recuperar a original
for z=1:n3
for i=1:(n1-1)
Lepd(:,i,z) = [diag(fliplr(Le_dia_esq(:,:,z)),(n1-
i));diag(fliplr(Le_dia_esq(:,:,z)),-i)];
Lepd(:,n1,z) = [diag(fliplr(Le_dia_esq(:,:,z)),0)];
end
end
end
% LLR total
Lt = Lc + Le1 + Le2 + Le3 + Lepd;
c_estim = (sign(Lt)+1)/2;
C_estim = reshape(c_estim,n1,n2,n3);
M_estim = C_estim(1:k1,1:k2,1:k3);
m_estim = reshape(M_estim,k1*k2*k3,1);