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

📄 rs_bpsk_system_simulation.m

📁 golay码&RS码的性能分析与比较
💻 M
字号:
% BER performance of RS & Golay coding and BPSK modulation system.
% AWGN channel is used in this simulation.

E=1;    % energy of per symbol  
EbN0db_sim=0:6;     % signal to noise ratio in dB of simulation  
%************************ BER of simulation  ************************
for nEN = 1:length(EbN0db_sim)
% Clear bit error counters   
    berr_counter(nEN)=0;  % with Golay coding
    berr_counter1(nEN)=0;  % without Golay coding
% Clear counter of transmitted symbols.It has 12 bits per symbol.
    ndata=0;
% terminate bit errors
    berrlim=500;
    while berr_counter(nEN)<berrlim
        ndata=ndata+1;
        source=round(rand(1,12));    % Generate one data source.
% Golay encoder       
        [encoder_data]=Golay_encoder(source);
% BPSK modulation        
        mod_data=encoder_data.*2-1;
% Attenuation calculation        
        spow=sum(mod_data.*mod_data)/24;
	    attn=0.5*spow*10.^(-EbN0db_sim(nEN)/10);
	    attn=sqrt(attn);
        noise=randn(1,length(mod_data)).*attn;   % Add White Gaussian Noise (AWGN)
% Data is transmitted in AWGN channel.                               
        channel_data=mod_data+noise; 
% BPSK demodulation       
        demo_data=channel_data>0;
% Golay decoder        
        [decoder_data]=Golay_decoder(demo_data);
% Count bit errors with Golay coding       
        for i=1:12
        if (decoder_data(i)~=source(i))
            berr_counter(nEN)=berr_counter(nEN)+1; 
        end   
    end    
    ber(nEN)=berr_counter(nEN)/(ndata*24);   % bit error rate in simulation with Golay coding 
% Count bit errors without Golay coding
mod_data1=source.*2-1;  % modulation data without Golay coding
noise1=randn(1,length(mod_data1)).*attn;
channel_data1=mod_data1+noise1;  % Data is transmitted in AWGN channel without Golay coding.  
demo_data1=channel_data1>0;    % demodulation data without Golay coding
for i=1:12
        if (demo_data1(i)~=source(i))
            berr_counter1(nEN)=berr_counter1(nEN)+1; 
        end   
    end    
    ber1(nEN)=berr_counter1(nEN)/(ndata*12);  % bit error rate in simulation without Golay coding
end
end
% theoretical bit error rate of BPSK modulation without Golay coding
EbN0db_the=0:0.1:6;     % signal to noise ratio in dB of theory
for i=1:length(EbN0db_the)
    SNR=exp(EbN0db_the(i)*log(10)/10);            
    ber_the(i)=0.5*erfc(sqrt(SNR));
end
[x]=textread('RS7.txt','%f');        % with RS(7,3,5)
[y]=textread('RS127.txt','%f');      % with RS(127,122,7)

semilogy(EbN0db_sim,ber,'o');   % BER-EbNo curve with Golay coding
hold
semilogy(EbN0db_sim,ber1,'*');  % BER-EbNo curve without Golay coding
semilogy(EbN0db_the,ber_the);   % theoretical BER-EbNo curve
semilogy(EbN0db_sim,x,'ro');    % BER-EbNo curve with RS(7,3,5) coding
semilogy(EbN0db_sim,y,'r*');    % BER-EbNo curve with RS(127,122,7) coding

title('\bf BER performance of Golay & RS coding and BPSK modulation system');
xlabel('\fontsize{10} \bf Eb/N0');ylabel('\fontsize{10} \bf BER');
legend('BER-EbNo with Golay coding','BER-EbNo without coding','theoretical BER-EbNo curve','BER-EbNo with RS(7,3,5)','BER-EbNo with RS(127,122,7)');

⌨️ 快捷键说明

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