qpsk.m
上传用户:m_sun_001
上传日期:2014-07-30
资源大小:1115k
文件大小:3k
源码类别:

matlab例程

开发平台:

Matlab

  1. % Program 3-5
  2. % qpsk.m
  3. %
  4. % Simulation program to realize QPSK transmission system
  5. %
  6. % Programmed by H.Harada and T.Yamamura
  7. %
  8. %******************** Preparation part *************************************
  9. sr=256000.0; % Symbol rate
  10. ml=2;        % ml:Number of modulation levels (BPSK:ml=1, QPSK:ml=2, 16QAM:ml=4)
  11. br=sr .* ml; % Bit rate
  12. nd = 1000;   % Number of symbols that simulates in each loop
  13. ebn0=3;      % Eb/N0
  14. IPOINT=8;    % Number of oversamples
  15. %************************* Filter initialization ***************************
  16. irfn=21;                  % Number of taps
  17. alfs=0.5;                 % Rolloff factor
  18. [xh] = hrollfcoef(irfn,IPOINT,sr,alfs,1);   %Transmitter filter coefficients 
  19. [xh2] = hrollfcoef(irfn,IPOINT,sr,alfs,0);  %Receiver filter coefficients 
  20. %******************** START CALCULATION *************************************
  21. nloop=100;  % Number of simulation loops
  22. noe = 0;    % Number of error data
  23. nod = 0;    % Number of transmitted data
  24. for iii=1:nloop
  25.     
  26. %*************************** Data generation ********************************  
  27.     data1=rand(1,nd*ml)>0.5;  % rand: built in function
  28.     
  29. %*************************** QPSK Modulation ********************************  
  30.     [ich,qch]=qpskmod(data1,1,nd,ml);
  31. [ich1,qch1]= compoversamp(ich,qch,length(ich),IPOINT); 
  32. [ich2,qch2]= compconv(ich1,qch1,xh); 
  33.      
  34. %**************************** Attenuation Calculation ***********************
  35.     spow=sum(ich2.*ich2+qch2.*qch2)/nd;  % sum: built in function
  36. attn=0.5*spow*sr/br*10.^(-ebn0/10);
  37. attn=sqrt(attn);  % sqrt: built in function
  38.      
  39. %********************** Fading channel **********************
  40.   % Generated data are fed into a fading simulator
  41.   % [ifade,qfade]=sefade(ich2,qch2,itau,dlvl,th1,n0,itnd1,now1,length(ich2),tstp,fd,flat);
  42.   
  43.   % Updata fading counter
  44.   %itnd1 = itnd1+ itnd0;
  45. %********************* Add White Gaussian Noise (AWGN) **********************
  46.     [ich3,qch3]= comb(ich2,qch2,attn);% add white gaussian noise
  47. [ich4,qch4]= compconv(ich3,qch3,xh2);
  48.     syncpoint=irfn*IPOINT+1;
  49.     ich5=ich4(syncpoint:IPOINT:length(ich4));
  50.     qch5=qch4(syncpoint:IPOINT:length(qch4));
  51.         
  52. %**************************** QPSK Demodulation *****************************
  53.     [demodata]=qpskdemod(ich5,qch5,1,nd,ml);
  54. %************************** Bit Error Rate (BER) ****************************
  55.     noe2=sum(abs(data1-demodata));  % sum: built in function
  56. nod2=length(data1);  % length: built in function
  57. noe=noe+noe2;
  58. nod=nod+nod2;
  59. fprintf('%dt%en',iii,noe2/nod2);  % fprintf: built in function
  60. end % for iii=1:nloop    
  61. %********************** Output result ***************************
  62. ber = noe/nod;
  63. fprintf('%dt%dt%dt%en',ebn0,noe,nod,noe/nod);  % fprintf: built in function
  64. fid = fopen('BERqpsk.dat','a');
  65. fprintf(fid,'%dt%et%ft%ftn',ebn0,noe/nod,noe,nod);  % fprintf: built in function
  66. fclose(fid);
  67. %******************** end of file ***************************