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

matlab例程

开发平台:

Matlab

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