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

matlab例程

开发平台:

Matlab

  1. % Program 2-5
  2. % fade.m
  3. %
  4. % Generate Rayleigh fading
  5. % Programmed by H.Harada  
  6. function [iout,qout,ramp,rcos,rsin]=fade(idata,qdata,nsamp,tstp,fd,no,counter,flat)
  7. %****************** variables *************************
  8. % idata  : input Ich data     
  9. % qdata  : input Qch data     
  10. % iout   : output Ich data
  11. % qout   : output Qch data
  12. % ramp   : Amplitude contaminated by fading
  13. % rcos   : Cosine value contaminated by fading
  14. % rsin   : Cosine value contaminated by fading
  15. % nsamp  : Number of samples to be simulated       
  16. % tstp   : Minimum time resolution                    
  17. % fd     : maximum doppler frequency               
  18. % no     : number of waves in order to generate fading   
  19. % counter  : fading counter                          
  20. % flat     : flat fading or not 
  21. % (1->flat (only amplitude is fluctuated),0->nomal(phase and amplitude are fluctutated)    
  22. %******************************************************
  23. if fd ~= 0.0  
  24.     ac0 = sqrt(1.0 ./ (2.0.*(no + 1)));   % power normalized constant(ich)
  25.     as0 = sqrt(1.0 ./ (2.0.*no));         % power normalized constant(qch)
  26.     ic0 = counter;                        % fading counter
  27.  
  28.     pai = 3.14159265;   
  29.     wm = 2.0.*pai.*fd;
  30.     n = 4.*no + 2;
  31.     ts = tstp;
  32.     wmts = wm.*ts;
  33.     paino = pai./no;                        
  34.     xc=zeros(1,nsamp);
  35.     xs=zeros(1,nsamp);
  36.     ic=[1:nsamp]+ic0;
  37.   for nn = 1: no
  38.   cwn = cos( cos(2.0.*pai.*nn./n).*ic.*wmts );
  39.   xc = xc + cos(paino.*nn).*cwn;
  40.   xs = xs + sin(paino.*nn).*cwn;
  41.   end
  42.   cwmt = sqrt(2.0).*cos(ic.*wmts);
  43.   xc = (2.0.*xc + cwmt).*ac0;
  44.   xs = 2.0.*xs.*as0;
  45.   ramp=sqrt(xc.^2+xs.^2);   
  46.   rcos=xc./ramp;
  47.   rsin=xs./ramp;
  48.   if flat ==1
  49.     iout = sqrt(xc.^2+xs.^2).*idata(1:nsamp);    % output signal(ich)
  50.     qout = sqrt(xc.^2+xs.^2).*qdata(1:nsamp);    % output signal(qch)
  51.   else
  52.     iout = xc.*idata(1:nsamp) - xs.*qdata(1:nsamp);   % output signal(ich)
  53.     qout = xs.*idata(1:nsamp) + xc.*qdata(1:nsamp);   % output signal(qch)
  54.   end
  55. else  
  56.   iout=idata;
  57.   qout=qdata;
  58. end
  59. % ************************end of files***********************************