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

📄 qpsk_fading.m

📁 Single/Multipath Channel Model Verificaiton EbNo vs. BER/SER under AWGN BPSK vs. QPSK Theory vs.
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% File Name: qpsk_fading.m
% Function: qpsk fading simulation
% Author:
% Date: 11.29
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Preparation part %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

sr=256000.0; % symbol rate
ml=2;        % number of modulation levels (QPSK:ml=2)
br=sr .* ml; % bit rate
nd = 1000;   % number of symbols that simulates in each loop
Eb_N0=0:1:30;% Eb/N0
nloop=500;    % number of simulation loops

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Fading Initialization %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
v=0;         % v: speed of MS (km/h)
%v=120;
fc=2e9;                
c=3e8;                   
fd=1000*fc/c/3600; 
%fd=1000*v*fc/c/3600; % calculate maximum Doppler frequency
fs=10*fd;    
tstp=1/fs;   % minimum time resolution
no=16;       % number of oscillator
counter=1000;% fading counter
flat = 1; % flat fading

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Start %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:length(Eb_N0)
    
    noe = 0;    % number of error data
    nod = 0;    % number of transmitted data
    soe = 0;    % number of error symbol
    sos = 0;    % number of transmitted symbol
    totalb = 0;
    totals = 0;
    
    for ii=1:nloop
    
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Data Generation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
	
    data1=rand(1,nd*ml)>0.5;
    
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% QPSK Modulation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  

    [ich,qch]=qpskmod(data1,nd,ml);
     
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Attenuation Calculation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	
    spow=sum(ich.*ich+qch.*qch)/nd;  
	attn=0.5*spow*sr/br*10.^(-Eb_N0(i)/10);
	attn=sqrt(attn); 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Fading %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    [ifade,qfade] = fade(ich,qch,nd,tstp,fd,no,counter,flat);   
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% AWGN %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	
    [ich2,qch2]= qpskawgn(ifade,qfade,attn);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Compensation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    H = (ifade + sqrt(-1) * qfade) ./ (ich + sqrt(-1) * qch);
    Y = (ich2 + sqrt(-1) * qch2) ./ H;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% QPSK Demodulation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    [demodata]=qpskdemod(real(Y),imag(Y),nd,ml);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% BER/SER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    noe2=sum(abs(data1-demodata));
	nod2=length(data1); 
	noe=noe+noe2;
	nod=nod+nod2;
	totalb = totalb + noe/nod;
    
    soe = soe + qpskser(data1,demodata,ml);
    sos = sos + length(data1) ./ ml;
    totals = totals + soe/sos;
    
    end % for ii=1:nloop   
    
    Avg_BER(i) = totalb/nloop;
    Theory(i) = (1/2) * erfc(sqrt(10.^(Eb_N0(i)/10)));
    SER(i) = totals/nloop;
    SNR(i) = 10*log10(10^(Eb_N0(i)/10) ./ ml);
end % Eb_N0=0:1:10

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Output SNR %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


semilogy(SNR,Avg_BER,'r-*');
title('QPSK(Flat Fading)'); 
xlabel('SNR(dB)');
ylabel('BER');
grid on;
hold on;
% 
% semilogy(SNR,SER,'r-*');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

⌨️ 快捷键说明

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