Jakes.m
上传用户:ange8833
上传日期:2020-09-16
资源大小:2k
文件大小:1k
源码类别:

传真(Fax)编程

开发平台:

Matlab

  1. function [RayLeigh] = Jakes(fm,fs,M,N0)       %jakes仿真器,输入参数:
  2.                                          %多普勒频移fm,时间抽样频率fs,仿真点数M,振荡器数N0
  3. N = 2*(2*N0+1),                          %N条路径 
  4. fi_0 = rand(1,1);
  5. fi_0 = 2*pi*fi_0;                        %0到2pi之间的随机相位
  6. FI= rand(1,N);
  7. FI = 2*pi*FI;                  %0到2pi之间的随机相位,待插入的随机相移
  8. fi= rand(1,N);
  9. fi = 2*pi*fi;                  %0到2pi之间的随机相位
  10. Tc0=0;                         %变量初始化
  11. Ts0=0;                         %变量初始化
  12. Tc=0;                          %变量初始化
  13. Ts=0;                          %变量初始化
  14. beta_N0_1 = pi/4,              %相移
  15. ts = 1/fs;     %抽样时间间隔
  16. t = [0 : ts*5 : M*ts*5];    %时间向量
  17. Tc0 = sqrt(2)*cos(beta_N0_1)*cos(2*pi*fm*t);%同相分量末值
  18. Ts0 = sqrt(2)*sin(beta_N0_1)*cos(2*pi*fm*t);%正交分量末值
  19. for i = 1 :N0;                 %累加各分量
  20.     alpha=2*pi*i/N;            %入射角参数定义
  21.     beta = -fi(i);
  22.     Tc = Tc + 2*cos(beta)*cos(2*pi*fm*cos(alpha)'*t+FI(i));%同相分量累加    
  23.     Ts = Ts + 2*sin(beta)*cos(2*pi*fm*cos(alpha)'*t+FI(i));%正交分量累加
  24. end
  25. Tc = Tc + Tc0;                
  26. Tc = (2./sqrt(N))*Tc;          %同相分量总值
  27. Ts =Ts + Ts0;           
  28. Ts = (2./sqrt(N))*Ts;          %正交分量总值
  29. T  = Tc+sqrt(-1)*Ts;           %接收信号复包络
  30. RayLeigh = T(1:M);                  %在复包络上采M个值进行仿真
  31. end