📄 mupathsisomud.m
字号:
function [LE]=MuPathSISOMUD(La,A,S,c,psd,G,R,No)
% 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.
% G : M*KL*K = Multipath channel gain matrix for all users(K) and for all
% symbols (M) and for all paths(L).
% R : M*(2De+1)*KL*KL : Corelation matrices for all symbols(M) and for all
% MULTIPATH DELAYS.In this case,De has been set to 1.
% No : KL*1 : Noise components of all 'KL' RAKE Finger's outputs.
% H : M*K*3K : 'H'(Refer to book) matrices for all the symbols (M).
% D : M*3K*3K : '1 - soft estimate' matrices for all the symbols (M).
s=size(La);
K=s(1);
M=s(2);
s=size(G);
KL=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
if(i~=1)
t1 = TD2mtrx(G,i,KL,K)' * FD2mtrx(R,i,3,KL)*TD2mtrx(G,i-1,KL,K);
else
t1 = (TD2mtrx(G,i,KL,K)' * FD2mtrx(R,i,1,KL)*TD2mtrx(G,i+1,KL,K))';
end
t2 = TD2mtrx(G,i,KL,K)' * FD2mtrx(R,i,2,KL)*TD2mtrx(G,i,KL,K);
H(i,:,:)=[t1 t2 t1'];
end
for i=1:M
for k=1:K
if(i==1)
D(i,k,k)=1;
else
D(i,k,k)=1-(SE(k,i-1)^2);
end
D(i,K+k,K+k)=1-(SE(k,i)^2);
if(i==M)
D(i,2*K+k,2*K+k)=1;
else
D(i,2*K+k,2*K+k)=1-(SE(k,i+1)^2);
end
end
end
for i=1:M
TH=TD2mtrx(H,i,K,3*K);
ts1=TH*TD2mtrx(D,i,3*K,3*K)*TH';
ts2=psd*STD2mtrx(H,i,K,K,0,K);
ts=inv(ts1+ts2);
for k=1:K
tsi1=ts-((ts*TH(:,K+k))*(ts*TH(:,K+k))')/((SE(k,i)^-2) + TH(:,K+k)'*ts*TH(:,K+k));
Mean(k,i)=TH(:,K+k)'*tsi1*TH(:,K+k);
end
end
for i=1:M
TH=TD2mtrx(H,i,K,3*K);
ts1=TH*EnAmp(A)*TD2mtrx(D,i,3*K,3*K)*EnAmp(A)*TH';
ts2=psd*STD2mtrx(H,i,K,K,0,K);
ts=inv(ts1+ts2);
noise=TD2mtrx(G,i,KL,K)'*No;
for k=1:K
b=Datamat(c,i);
be=Sofestivec(SE,k,i);
yk = TD2mtrx(H,i,K,3*K)*EnAmp(A)*(b-be) + noise;
tsi2=ts-((ts*TH(:,K+k))*(ts*TH(:,K+k))')/(((SE(k,i)*A(k,k))^-2) + TH(:,K+k)'*ts*TH(:,K+k));
wk=A(k,k)*tsi2*TH(:,K+k);
z(k,i)=wk'*yk;
end
end
for k=1:K
for i=1:M
LE(k,i)=real(4*z(k,i))/(1-Mean(k,i));
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -