📄 sisomud.m
字号:
function [LE]=SISOMUD(La,A,S,r,psd)
% La : K*M = A Priori LLR's of code bits of all users.
% K = Number of users ; M = Number of symbols.
% LE : K*M = Extrinsic LLR's of code bits of all users.
% r : N*M = Received matrix. 1 column vector corresponding to a symbol
% contains 'N' chips.
% SE : K*M = Soft estimate matrix of code bits.
% tsi : (K+1)*M*K*K = (K+1) corresponds to the user index ; M corresponds to
% the symbol index ; K*K corresponds to the matrix 'tsi(k,i)'.
% phi : K*M*K*K = K corresponds to the user index ; M corresponds to
% the symbol index ; K*K corresponds to the matrix 'phi(k,i)'.
s=size(La);
K=s(1);
M=s(2);
for k=1:K
for i=1:M
SE(k,i)=tanh(0.5*La(k,i));
end
end
for i=1:M
tsi(1,i,:,:)=(S'*S)/psd;
end
for k=2:K+1
for i=1:M
temp=FD2mtrx(tsi,k-1,i,K);
De=temp(k-1,k-1)+((A(k-1,k-1)^-2)*((1-SE(k-1,i)^2)^-1));
tsi(k,i,:,:)= temp - (temp(:,k-1)*temp(:,k-1)')/De;
end
end
for k=1:K
for i=1:M
temp=FD2mtrx(tsi,K+1,i,K);
De=temp(k,k)+((A(k,k)*SE(k,i))^-2);
phi(k,i,:,:)=temp - (temp(:,k)*temp(:,k)')/De;
end
end
for k=1:K
for i=1:M
temp=FD2mtrx(phi,k,i,K);
z=A(k,k)*temp(k,:)*((inv(S'*S)*S'*r(:,i))-(A*zeroinsert(SE(:,i),k)));
m=(A(k,k)^2)*temp(k,k);
LE(k,i)=(2*z)/(1-m);
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -