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

📄 ceturbo.m

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

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

for SNR=1
    
    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);
    for frame=1:Frame
        fprintf(fid,'\n the frame=%d BER 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
        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;
            
            bit_error=sum(xor(decision_c,C_information));
            BER=[BER,bit_error];

            % 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
        BER
        fprintf(fid,'%3d',BER);
    end
   
end
fclose(fid);
        
        

⌨️ 快捷键说明

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