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

matlab例程

开发平台:

Matlab

  1. % Program 3-15
  2. % msk2.m
  3. %
  4. % Simulation program to realize MSK transmission system
  5. %
  6. % Programmed by R.Sawai and H.Harada
  7. %
  8. %******************** Preparation part *************************************
  9. sr=256000.0; % Symbol rate
  10. ml=1;        % ml:Number of modulation levels 
  11. br=sr.*ml;   % Bit rate
  12. nd = 1000;   % Number of symbols that simulates in each loop
  13. ebn0=5;      % Eb/N0
  14. IPOINT=8;    % Number of oversamples
  15. %******************** START CALCULATION *************************************
  16. nloop=100;  % Number of simulation loops
  17. noe = 0;    % Number of error data
  18. nod = 0;    % Number of transmitted data
  19. for iii=1:nloop 
  20.     
  21. %*************************** Data generation ******************************** 
  22.     data1=rand(1,nd*ml)>0.5;  % rand: built in function
  23. %*************************** MSK Modulation ********************************  
  24.   
  25.     data11=2*data1-1;
  26.     data2=oversamp2(data11,length(data11),IPOINT);
  27.     th=zeros(1,length(data2)+1);
  28.     ich2=zeros(1,length(data2)+1);
  29.     qch2=zeros(1,length(data2)+1);
  30.     for ii=2:length(data2)+1
  31.        th(1,ii)=th(1,ii-1)+pi/2*data2(1,ii-1)./IPOINT;
  32.     end
  33.     ich2=cos(th);
  34.     qch2=sin(th);
  35.     
  36. %**************************** Attenuation Calculation ***********************
  37.     spow=sum(ich2.*ich2+qch2.*qch2)/(nd*IPOINT);  % sum: built in function
  38.     attn=0.5*spow*sr/br*10.^(-ebn0/10);
  39. attn=sqrt(attn);  % sqrt: built in function
  40.    
  41.    
  42. %********************** Fading channel **********************
  43.     %[ifade,qfade]=sefade2(data2,qdata1,itau,dlvl1,th1,n0,itnd1,now1,length(data2),fftlen2,fstp,fd,flat);
  44. %********************* Add White Gaussian Noise (AWGN) **********************
  45. [ich3,qch3]= comb(ich2,qch2,attn);% add white gaussian noise
  46.     syncpoint = 1;
  47.     ich5=ich3(syncpoint:IPOINT:length(ich3));
  48.     qch5=qch3(syncpoint:IPOINT:length(qch3));
  49.         
  50. %**************************** MSK Demodulation *****************************
  51.     demoddata2(1,1)=-1;
  52.     for k=3:2:nd*ml+1
  53.          demoddata2(1,k)=ich5(1,k)*qch5(1,k-1)*cos(pi*(k))>0;
  54.     end
  55.     for n=2:2:nd*ml+1
  56.          demoddata2(1,n)=ich5(1,n-1)*qch5(1,n)*cos(pi*(n))>0;
  57.     end
  58.     [demodata]=demoddata2(1,2:nd*ml+1);
  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. %****************************** Data file ***********************************
  67. ber = noe/nod;
  68. fprintf('%dt%dt%dt%en',ebn0,noe,nod,noe/nod);  % fprintf: built in function
  69. fid = fopen('BERmsk2.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 ***************************