📄 llrnlayer1.m
字号:
function [output] = LLRnLayer1(Input)
RxSig=Input(1:4).';
chan_Hv=Input(5:20);
Chan=reshape(chan_Hv,4,4);
%SNRdB=input('please enter SNR:')
SNRdB=60;
[Mrx,Mtx]=size(Chan); %8*8
M=16;
SNR=10^((SNRdB)/10);
sigma_n2=sqrt(Mtx)/sqrt(SNR);
S=[-3-3j,-3-j,-3+j,-3+3j,...
-1-3j,-1-j,-1+j,-1+3j,...
1-3j, 1-j, 1+j, 1+3j,...
3-3j, 3-j, 3+j, 3+3j]/sqrt(10);
Symb2Bits=[1 1 1 1; 1 1 1 0; 1 0 1 0; 1 0 1 1;...
1 1 0 1; 1 1 0 0; 1 0 0 0; 1 0 0 1;...
0 1 0 1; 0 1 0 0; 0 0 0 0; 0 0 0 1;...
0 1 1 1; 0 1 1 0; 0 0 1 0; 0 0 1 1];
% zero forcing 选择最先检查的行向量
VarInterf=zeros(1,Mtx); %1X8
PartMean=zeros(1,Mtx);
InvCh=inv(Chan'*Chan)*Chan'; %MxN
DetSig=InvCh*RxSig;
for m=1:Mtx
ChanNorm(m)=norm(InvCh(m,:),'fro')^2; %w11^2+...+w1N^2; .....; wM1^20+...+wMN^2
VarInterf(m)=sigma_n2^2*ChanNorm(m);%%
PartMean(m)=1;
end
[B,IX]=sort(ChanNorm,'descend'); %对wi模平方,倒序排列
% calculatethe bit likelihood information
Blr=zeros(1,1*log2(M));%0 0 0 0
for i=1:log2(M)
for n=1:M
if Symb2Bits(n,i)==0
ZeroPrb=abs(DetSig(IX(1))-PartMean(IX(1))*S(n))^2;
else
OnePrb=abs(DetSig(IX(1))-PartMean(IX(1))*S(n))^2;
end
end
Blr((i-1)+1)=(ZeroPrb-OnePrb)/VarInterf(IX(1));
end
% output the bit likelihood information
DetSig1=reshape(DetSig,1,4);
output=horzcat(DetSig1,Blr,IX);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -