⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chase_function.m

📁 是一个四发四收的球型译码程序
💻 M
字号:
function [ncode]=chase_function(Input)

Tx=4;
M=16;
h=modem.qammod(M);
h2=modem.qamdemod(M);
Factor=10;
Table_bit=zeros(M,log2(M));
for i=2:M
    Table_bit(i,:)=de2bi(i-1,log2(M));
end
L=1;
SNRdB=100;
SNR=10^(SNRdB/10);
sigma_n2=sqrt(Tx)/sqrt(SNR);
RxSig_MF=Input(1:4).';
chan_Hv=Input(5:20);
Ch_Total=reshape(chan_Hv,4,4);
[BLR,DeSymb,IX]=LLRnLayer(RxSig_MF,Ch_Total,M,sigma_n2,1,1,1);
    
ind=IX(1);
ChanCoff=Ch_Total(:,ind);
Chan=horzcat(Ch_Total(:,1:ind-1),Ch_Total(:,ind+1:Tx));
DetSignal=demodulate(h2,sqrt(Factor)*[DeSymb(ind,1)]);
Det_bit=de2bi(DetSignal,log2(M),2);
Bit_Vec=reshape(Det_bit,log2(M),1);
Table_pertur=zeros(M,log2(M));
Phi=zeros(M,1);
Temp_Ind=0;
for i=1:M
    Table_pertur(i,:)=xor(Table_bit(i,:),Bit_Vec.');
    Phi(i)=Phi(i)+Table_pertur(i,1:log2(M))*abs(BLR(1,1:log2(M)).');
    if Phi(i)<=5
       Temp_Ind=Temp_Ind+1;
       IndSet(Temp_Ind)=i;          
    end
end
    
IndSet=IndSet(:,1:Temp_Ind);
ML_Matrix=zeros(Temp_Ind,1);
    
for i=1:Temp_Ind
    Search_bit=Table_bit(IndSet(i),:);
    DetBitMap=reshape(Search_bit,1,log2(M));
    OrgSymb=bi2de(DetBitMap);
    Sym1=modulate(h,OrgSymb)/sqrt(Factor);
    ReSig=RxSig_MF-ChanCoff.*Sym1;
    Det_sig_temp=MIMONCZF(ReSig,Chan,M,sigma_n2,Factor,0);
    DetTemp(:,i)=vertcat(Det_sig_temp(1:ind-1,1),OrgSymb(1,1),Det_sig_temp(ind:Tx-1,1));
    Tx_sym=modulate(h,DetTemp(:,i))/sqrt(Factor);
    ML_Matrix(i)=norm(RxSig_MF-Ch_Total*Tx_sym,'fro')^2;
end
[MinValue,Index]=min(ML_Matrix);
Det_sym_temp=DetTemp(:,Index);
Det_bit=de2bi(Det_sym_temp,log2(M),2);
ncode=reshape(Det_bit,Tx*L*log2(M),1);




 



    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -