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

matlab例程

开发平台:

Matlab

  1. % Program 3-1
  2. % bpsk.m
  3. %
  4. % Simulation program to realize BPSK transmission system
  5. %
  6. % Programmed by H.Harada and T.Yamamura,
  7. %
  8. %******************** Preparation part **********************
  9. sr=256000.0; % Symbol rate
  10. ml=1;        % Number of modulation levels
  11. br=sr.*ml;   % Bit rate (=symbol rate in this case)
  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 filter 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. data=rand(1,nd)>0.5;  % rand: built in function
  28. %******************** BPSK Modulation ***********************  
  29.     data1=data.*2-1;
  30. [data2] = oversamp( data1, nd , IPOINT) ;
  31. data3 = conv(data2,xh);  % conv: built in function
  32. %****************** Attenuation Calculation *****************
  33.     spow=sum(data3.*data3)/nd;
  34. attn=0.5*spow*sr/br*10.^(-ebn0/10);
  35. attn=sqrt(attn);
  36.    
  37. %********************** Fading channel **********************
  38.   % Generated data are fed into a fading simulator
  39.   % In the case of BPSK, only Ich data are fed into fading counter
  40.   % [ifade,qfade]=sefade(data3,zeros(1,length(data3)),itau,dlvl,th1,n0,itnd1,now1,length(data3),tstp,fd,flat);
  41.   
  42.   % Updata fading counter
  43.   %itnd1 = itnd1+ itnd0;
  44. %************ Add White Gaussian Noise (AWGN) ***************
  45.     inoise=randn(1,length(data3)).*attn;  % randn: built in function
  46. data4=data3+inoise;
  47. data5=conv(data4,xh2);  % conv: built in function
  48. sampl=irfn*IPOINT+1;
  49. data6 = data5(sampl:8:8*nd+sampl-1);
  50.     
  51. %******************** BPSK Demodulation *********************
  52.     demodata=data6 > 0;
  53. %******************** Bit Error Rate (BER) ******************
  54.     noe2=sum(abs(data-demodata));  % sum: built in function
  55. nod2=length(data);  % length: built in function
  56. noe=noe+noe2;
  57. nod=nod+nod2;
  58. fprintf('%dt%en',iii,noe2/nod2);
  59. end % for iii=1:nloop    
  60. %********************** Output result ***************************
  61. ber = noe/nod;
  62. fprintf('%dt%dt%dt%en',ebn0,noe,nod,noe/nod);
  63. fid = fopen('BERbpsk.dat','a');
  64. fprintf(fid,'%dt%et%ft%ftn',ebn0,noe/nod,noe,nod);
  65. fclose(fid);
  66. %******************** end of file ***************************
  67.