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

matlab例程

开发平台:

Matlab

  1. % Program 3-13
  2. % msk.m
  3. %
  4. % Simulation program to realize MSK transmission system
  5. %
  6. % Programmed by H.Harada and T.Yamamura
  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=3;      % 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)>0.5;  % rand: built in function
  23. %*************************** MSK Modulation ********************************  
  24.   
  25.     [ich,qch]=qpskmod(data1,1,nd/2,2);
  26.     smooth1=cos(pi/2*[-1+1./4.*[0:IPOINT-1]]); %IPOINT point filtering
  27.     for ii=1:length(ich)
  28.        ich2((ii-1)*IPOINT+1:ii*IPOINT)=(-1)^(ii-1)*smooth1.*ich(ii);
  29.        qch2((ii-1)*IPOINT+1:ii*IPOINT)=(-1)^(ii-1)*smooth1.*qch(ii);
  30.     end
  31.     ich21=[ich2 zeros(1,IPOINT/2)];
  32.     qch21=[zeros(1,IPOINT/2) qch2];
  33.    
  34. %**************************** Attenuation Calculation ***********************
  35.     spow=sum(ich21.*ich21+qch21.*qch21)/nd/2    ;  % sum: built in function
  36. attn=0.5*spow*sr/br/2*10.^(-ebn0/10);
  37. attn=sqrt(attn);                             % sqrt: built in function
  38.    
  39. %********************** Fading channel **********************
  40.     %[ifade,qfade]=sefade2(data2,qdata1,itau,dlvl1,th1,n0,itnd1,now1,length(data2),fftlen2,fstp,fd,flat);
  41. %********************* Add White Gaussian Noise (AWGN) **********************
  42.     [ich3,qch3]= comb(ich21,qch21,attn);% add white gaussian noise
  43.     syncpoint=1;
  44. ich5 = ich3(syncpoint+IPOINT/2:IPOINT:length(ich2));
  45. qch5 = qch3(syncpoint+IPOINT:IPOINT:length(ich2)+IPOINT/2);
  46.    
  47.     ich5(2:2:length(ich5))=-1*ich5(2:2:length(ich5));
  48.     qch5(2:2:length(ich5))=-1*qch5(2:2:length(ich5));
  49. %**************************** MSK Demodulation *****************************
  50.     [demodata]=qpskdemod(ich5,qch5,1,nd/2,2);
  51. %************************** Bit Error Rate (BER) ****************************
  52.     noe2=sum(abs(data1-demodata));  % sum: built in function
  53. nod2=length(data1);  % length: built in function
  54. noe=noe+noe2;
  55. nod=nod+nod2;
  56. fprintf('%dt%en',iii,noe2/nod2);  % fprintf: built in function
  57. end % for iii=1:nloop    
  58. %********************** Output result ***************************
  59. ber = noe/nod;
  60. fprintf('%dt%dt%dt%en',ebn0,noe,nod,noe/nod);  % fprintf: built in function
  61. fid = fopen('BERmsk.dat','a');
  62. fprintf(fid,'%dt%et%ft%ftn',ebn0,noe/nod,noe,nod);  % fprintf: built in function
  63. fclose(fid);
  64. %******************** end of file ***************************