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

matlab例程

开发平台:

Matlab

  1. % Program 3-11
  2. % oqpsk.m
  3. %
  4. % Simulation program to realize OQPSK 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. %*************************** OQPSK Modulation ********************************  
  29.  
  30.     [ich,qch]=qpskmod(data1,1,nd,ml);
  31.     [ich1,qch1]=compoversamp(ich,qch,length(ich),IPOINT);
  32.     ich21=[ich1 zeros(1,IPOINT/2)];
  33.     qch21=[zeros(1,IPOINT/2) qch1];
  34.     [ich2, qch2]=compconv(ich21,qch21,xh); 
  35.  
  36. %**************************** Attenuation Calculation ***********************
  37.     spow=sum(ich2.*ich2+qch2.*qch2)/nd;  % sum: built in function
  38.     attn=0.5*spow*sr/br*10.^(-ebn0/10);
  39.     attn=sqrt(attn);                     % sqrt: built in function
  40.    
  41. %********************** Fading channel **********************
  42.  
  43.   % Generated data are fed into a fading simulator
  44.   % [ifade,qfade]=sefade(ich2,qch2,itau,dlvl,th1,n0,itnd1,now1,length(ich1),tstp,fd,flat);
  45.   
  46.   % Updata fading counter
  47.   %itnd1 = itnd1+ itnd0;
  48. %********************* Add White Gaussian Noise (AWGN) **********************
  49.     
  50.     [ich3,qch3]= comb(ich2,qch2,attn);% add white gaussian noise
  51. [ich4,qch4]= compconv(ich3,qch3,xh2);
  52.     syncpoint=irfn*IPOINT+1;
  53.     ich5=ich4(syncpoint:IPOINT:length(ich4));
  54.     qch5=qch4(syncpoint+IPOINT/2:IPOINT:length(qch4));
  55.         
  56. %**************************** OQPSK Demodulation *****************************
  57.    
  58.     [demodata]=qpskdemod(ich5,qch5,1,nd,ml);
  59. %************************** Bit Error Rate (BER) ****************************
  60.     noe2=sum(abs(data1-demodata));  % sum: built in function
  61.     nod2=length(data1);  % length: built in function
  62.     noe=noe+noe2;
  63.     nod=nod+nod2;
  64.     fprintf('%dt%en',iii,noe2/nod2);  % fprintf: built in function
  65. end % for iii=1:nloop    
  66. %********************** Output result ***************************
  67. ber = noe/nod;
  68. fprintf('%dt%dt%dt%en',ebn0,noe,nod,noe/nod);  % fprintf: built in function
  69. fid = fopen('BERoqpsk.dat','a');
  70. fprintf(fid,'%dt%et%ft%ftn',ebn0,noe/nod,noe,nod);  % fprintf: built in function
  71. fclose(fid);
  72. %******************** end of file ***************************