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

matlab例程

开发平台:

Matlab

  1. % Program 3-2
  2. % bpsk_fading.m
  3. %
  4. % Simulation program to realize BPSK transmission system
  5. % (under one path fading)
  6. %
  7. % Programmed by H.Harada and T.Yamamura,
  8. %
  9. %******************** Preparation part **********************
  10. sr=256000.0; % Symbol rate
  11. ml=1;        % Number of modulation levels
  12. br=sr.*ml;   % Bit rate (=symbol rate in this case)
  13. nd = 100;    % Number of symbols that simulates in each loop
  14. ebn0=10;     % Eb/N0
  15. IPOINT=8;    % Number of oversamples
  16. %******************* Filter initialization ********************
  17. irfn=21;     % Number of filter taps          
  18. alfs=0.5;    % Rolloff factor
  19. [xh] = hrollfcoef(irfn,IPOINT,sr,alfs,1);   %Transmitter filter coefficients 
  20. [xh2] = hrollfcoef(irfn,IPOINT,sr,alfs,0);  %Receiver filter coefficients 
  21. %******************* Fading initialization ********************
  22. % If you use fading function "sefade", you can initialize all of parameters.
  23. % Otherwise you can comment out the following initialization.
  24. % The detailed explanation of all of valiables are mentioned in Program 2-8.
  25. % Time resolution
  26. tstp=1/sr/IPOINT; 
  27. % Arrival time for each multipath normalized by tstp
  28. % If you would like to simulate under one path fading model, you have only to set 
  29. % direct wave.
  30. itau = [0];
  31. % Mean power for each multipath normalized by direct wave.
  32. % If you would like to simulate under one path fading model, you have only to set 
  33. % direct wave.
  34. dlvl = [0];
  35. % Number of waves to generate fading for each multipath.
  36. % In normal case, more than six waves are needed to generate Rayleigh fading
  37. n0=[6];
  38. % Initial Phase of delayed wave
  39. % In this simulation four-path Rayleigh fading are considered.
  40. th1=[0.0];
  41. % Number of fading counter to skip 
  42. itnd0=nd*IPOINT*100;
  43. % Initial value of fading counter
  44. % In this simulation one-path Rayleigh fading are considered.
  45. % Therefore one fading counter are needed.
  46.   
  47. itnd1=[1000];
  48. % Number of directwave + Number of delayed wave
  49. % In this simulation one-path Rayleigh fading are considered
  50. now1=1;        
  51. % Maximum Doppler frequency [Hz]
  52. % You can insert your favorite value
  53. fd=160;       
  54. % You can decide two mode to simulate fading by changing the variable flat
  55. % flat     : flat fading or not 
  56. % (1->flat (only amplitude is fluctuated),0->nomal(phase and amplitude are fluctutated)
  57. flat =1;
  58. %******************** START CALCULATION *********************
  59. nloop=1000;  % Number of simulation loops
  60. noe = 0;    % Number of error data
  61. nod = 0;    % Number of transmitted data
  62. for iii=1:nloop
  63. %******************** Data generation *********************** 
  64.     data=rand(1,nd)>0.5;  % rand: built in function
  65. %******************** BPSK Modulation ***********************  
  66.     data1=data.*2-1;
  67. [data2] = oversamp( data1, nd , IPOINT) ;
  68. data3 = conv(data2,xh);  % conv: built in function
  69. %****************** Attenuation Calculation *****************
  70.     spow=sum(data3.*data3)/nd;
  71. attn=0.5*spow*sr/br*10.^(-ebn0/10);
  72. attn=sqrt(attn);
  73.    
  74. %********************** Fading channel **********************
  75.   % Generated data are fed into a fading simulator
  76.   % In the case of BPSK, only Ich data are fed into fading counter
  77.   [ifade,qfade]=sefade(data3,zeros(1,length(data3)),itau,dlvl,th1,n0,itnd1,now1,length(data3),tstp,fd,flat);
  78.   
  79.   % Updata fading counter
  80.   itnd1 = itnd1+ itnd0;
  81. %************ Add White Gaussian Noise (AWGN) ***************
  82.     inoise=randn(1,length(ifade)).*attn;  % randn: built in function
  83. data4=ifade+inoise;
  84. data5=conv(data4,xh2);  % conv: built in function
  85. sampl=irfn*IPOINT+1;
  86. data6 = data5(sampl:8:8*nd+sampl-1);
  87.     
  88. %******************** BPSK Demodulation *********************
  89.     demodata=data6 > 0;
  90. %******************** Bit Error Rate (BER) ******************
  91.     % count number of instantaneous errors
  92.     noe2=sum(abs(data-demodata));  % sum: built in function
  93.     % count number of instantaneous transmitted data
  94.     nod2=length(data);  % length: built in function
  95.     noe=noe+noe2;
  96. nod=nod+nod2;
  97. fprintf('%dt%en',iii,noe2/nod2);
  98. end % for iii=1:nloop    
  99. %********************** Output result ***************************
  100. ber = noe/nod;
  101. fprintf('%dt%dt%dt%en',ebn0,noe,nod,noe/nod);
  102. fid = fopen('BERbpskfad.dat','a');
  103. fprintf(fid,'%dt%et%ft%ftn',ebn0,noe/nod,noe,nod);
  104. fclose(fid);
  105. %******************** end of file ***************************
  106.