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

📄 ml.m

📁 是一个四发四收的球型译码程序
💻 M
字号:
%==========================================
%16QAM;   1/2,3conv;    TX=4;RX=4;  硬判决
%==========================================

clear
Tx=4;
Rx=4;
M=16;
h=modem.qammod(M);
h2=modem.qamdemod(M);
Factor=10;
Table_bit=zeros(M,log2(M));

%L=input('please enter the length of the frame:');
SNRdB=input('please enter SNR:');
lenl=input('please enter the length of bit:');
%len=96*10;
L=1;
%SNRdB=5;

for SNRindex=1:length(SNRdB)
    SNRtemp=10.^((SNRdB+3)/10);
    SNR=SNRtemp(SNRindex);
sigma_n2=sqrt(Tx)/sqrt(SNR);
len=lenl(SNRindex);
msg=randint(len,1);
trel=poly2trellis(3,[6,7]);
code=convenc(msg,trel);
y=randintrlv(code,4831);
Sig_code=buffer(y,Tx*L*log2(M));
Sym_code=zeros(Tx*L*log2(M),2*len/(Tx*L*log2(M)));

for BloInd=1:2*len/(Tx*L*log2(M))
    %tranmit signal
    TxMatrix_bit_src=Sig_code(:,BloInd);
    TxMatrix_bit_map=reshape(TxMatrix_bit_src,Tx*L,log2(M));
    TxMatrix_sym_temp=bi2de(TxMatrix_bit_map);
    TxMatrix_sym=modulate(h,TxMatrix_sym_temp)/sqrt(Factor);
    TxMatrix=reshape(TxMatrix_sym,Tx,L);

    %channel
    for i=1:Rx
        Ch=(randn(Tx,L)+sqrt(-1)*randn(Tx,L)).*sqrt(0.5);
        TxPassCh=Ch.*TxMatrix;
        TxSum_temp=sum(TxPassCh);
        for k=1:L
            Ch_Equ(Rx*(k-1)+i,Tx*(k-1)+1:Tx*k)=(Ch(:,k)).';
        end
         Tx_Sum(i,:)=TxSum_temp;
    end
    %receive signal
    RxSig=Tx_Sum+sigma_n2*(randn(Rx,L)+sqrt(-1)*randn(Rx,L))/sqrt(2);
    %RxSig=Tx_Sum;
    RxSig_MF=reshape(RxSig,Rx*L,1) ;
    Ch_Total=Ch_Equ;
    Det_sym_temp=MIMOMLD(RxSig_MF,Ch_Total,M,Factor);
    dd_bit=reshape(Det_sym_temp,Tx*L*log2(M),1);
    Sym_code(:,BloInd)=dd_bit.';

end
ncode=reshape(Sym_code,2*len,1);
b1 =  randdeintrlv(ncode,4831);  
decoded = vitdec(b1,trel,3,'trunc','hard');    


ber(SNRindex)=length(find(decoded-msg))/len;    
end
semilogy(SNRdB,ber)
grid on;

⌨️ 快捷键说明

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