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

📄 arqceturbo.asv

📁 turbo 码matlab编译码程序
💻 ASV
字号:
clc
clear
% This is the whole coding and decoding processing
% CE stop criterion
% ARQ scheme
rate=1/3;
K=640;
m=3;
I=Sinterleaver(K+m);
Iteration=6;
Frame=2;
ARQ=2;
q=1e-3;

fid=fopen('resultarq.txt','wb');

for SNR=0.1:0.1:1.0
    
    SNR_lin=10^(SNR/10);
    sgma=1/sqrt(2*SNR_lin*rate);
    CONS=-1/(2*(sgma^2)); 
    
    fprintf(fid,'\n****************** SNR=%4.2f **********************\n',SNR);
    fprintf('\n****************** SNR=%4.2f **********************\n',SNR);
    Frame_err=0;
    Frame_err_arq=0;
    for frame=1:Frame
        fprintf(fid,'\n the frame=%d  is',frame);
        
        X_information=generaterandomdata(K);
        [X_parity_1,X_parity_2,X_information]=encode1513(X_information,I);
        
        C_information=X_information;
        C_parity_1=X_parity_1;
        C_parity_2=X_parity_2;
        
        % BPSK
        X_information=bpsk(X_information);
        X_parity_1=bpsk(X_parity_1);
        X_parity_2=bpsk(X_parity_2);
        % add noise
        % ARQ
        soft_decison=zeros(1,K+m);
        for rp=1:ARQ
            for i=1:K+m
                [gsrv1,gsrv2]=gngauss(0,sgma);
                Y_system(i)=X_information(i)+gsrv1;
                Y_parity_1(i)=X_parity_1(i)+gsrv2;
                [gsrv1,gsrv2]=gngauss(0,sgma);
                Y_parity_2(i)=X_parity_2(i)+gsrv1;
            end
            for i=1:K+m
                Y_system_inter(i)=Y_system(I(i));
            end
            
            prior_information=zeros(1,K+m);
            % iteration decoding
            BER=[];
            T=zeros(1,Iteration);
            for Inter=1:Iteration
                
                input_1=Y_system;
                input_2=Y_parity_1;
                
                [decision_c,extrin_information_1,ln_c_1]=map_decoder_1(input_1,input_2,CONS,prior_information);
                prior_information=extrin_information_1(I);
                
                input_1=Y_system_inter;
                input_2=Y_parity_2;
                [decision_c,extrin_information_2,ln_c_2]=map_decoder_2(input_1,input_2,CONS,prior_information);
                prior_information(I)=extrin_information_2;
                
                decision_c(I)=decision_c;
                % compute the cross entropy
                T(Inter)=sum(((abs(prior_information-extrin_information_1)).^2)./exp(abs(ln_c_1)));                
                if T(Inter)<=q*T(1)
                    fprintf('\n****************** the interation number is %d **********************\n',Inter);
 
                    break;
                end
            end
            %%%%%%%%%%  compute non-ARQ frame error
            ln_c_2(I)=ln_c_2;
            soft_decison=soft_decison+ln_c_2;
            if rp==1
                decision_c=(soft_decison>0);
                if sum(xor(decision_c,C_information))>0
                    Frame_err=Frame_err+1;
                end
            end

        end  % arq finished
        decision_c=(soft_decison>0);
        if decision_c~=C_information
            Frame_err_arq=Frame_err_arq+1;
        end

    end
    
    fprintf(fid,'non_ARQ scheme %3d',Frame_err);
    fprintf(fid,'under ARQ scheme %3d',Frame_err_arq);
end
fclose(fid);


⌨️ 快捷键说明

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