⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sim.m

📁 Gauss_generator利用参数(多普勒频移、系数、相移)生成确定的实高斯过程.m gaussian确定离散多普勒频移、系数、相移的程序.m Rice_generator在瑞利过程的基础上考虑视
💻 M
字号:
%函数function [f_i,c_i,theta_i]=Parameter_Classical (Method_type,N_i,Variance,fmax,phase)
%功能:确定离散多普勒频移(fi,n)、多普勒系数(Ci,n)、多普勒相移(@i,n):适用于仿真经典功率谱的情况。
%输入参数说明:
%(1)Method_type,表示计算离散多普勒频移和多普勒系数所采用的方法。其输入以及具体含义如下:
%     MED  等距离法
%     MEA  等面积法
%     MCM  Monte Carlo法
%     MSEM 最小均方误差法
%     MEDS 精确多普勒扩展法
%     Jakes Jakes仿真法
%(2)N_i,表示正弦振荡器的数目;
%(3)Variance, 表示确定高斯过程的平均功率;
%(4)fmax,表示最大多普勒频移;
%(5)phase, 表示用于计算多普勒相移的方法。其输入以及具体含义如下:
%    Rand   随机相移法
%    permuted  组合相移法
% 输出参数说明:
%(1)f_i,表示离散多普勒频移(fi,n)
% (2)c_i,表示多普勒系数(Ci,n);
% (3)theta_i, 表示多普勒相移(@i,n)
%程序:

function [f_i,c_i,theta_i]=Parameter_Classical(Method_type,N_i,Variance,fmax,phase)
sigma=sqrt(Variance);
%等距离法(MED)
if Method_type =='MED'
    n=(1:N_i)';
    f_i=fmax/(2*N_i)*(2*n-1);
    c_i=2*sigma/sqrt(pi)*(asin(n/N_i)-asin((n-1)/N_i)).^0.5;
    
%等面积法
elseif Method_type=='MEA'
    n=(1:N_i)';
    f_i=fmax*sin(pi*n/(2*N_i));
    c_i=sigma*sqrt(2/N_i)*ones(size(n));
    
%Mont Carlo法(MCM)
 
elseif Method_type=='MCM'
    n=rand(N_i,1);
    f_i=fmax*sin(pi*n/2);
    c_i=sigma*sqrt(2/N_i)*ones(size(n));
    
%最小均方误差法(MSEM)
elseif Method_type=='MSEM'
    n=(1:N_i);
    f_i=fmax/(2*N_i)*(2*n-1);
    T=1/(2*fmax/N_i);
    M=5e3;
    t=linspace(0,T,M);
    Jo=besselj(0,2*pi*fmax*t);
    c_i=zeros(size(f_i));
    for k=1:lenght(f_i)
        c_i(k)=2*sigma*sqrt(1/T(trapz(t,Jo.*cos(2*pi*f_i(k)*t))));
    end;
%精确多普勒扩展法(MEDS)
elseif Method_type=='MEDS'
    n=(1:N_i);
    f_i=fmax*sin(pi*(n-0.5)/(2*N_i));
    c_i=sigma*sqrt(2/N_i)*ones(size(n));
    
%Jakes仿真法
elseif Method_tye=='Jakes'
    n=1:N_i-1;
    f_i=fmax*[[cos(pi*n/(2*N_i-1)) 1]',[cos(pi*n/(2*N_i-1)) 1]'];
    c_i=s*sigma/sqrt(N_i-1/2)*[[sin(pi*n/(N_i-1)) 1/2]',[cos(pi*n/(N_i-1)) 1/2]'];
    theta_i=zeros(size(f_i));
    phase='none';
else
    error('Method if unkown')
end

%计算多普勒相移
if phase=='rand',
   theta_i=rand(N_i,1)*2*pi;
elseif phase=='permuted',
    n=(1:N_i)';
    U=rand(size(n));
    [x,k]=sort(U);
    theta_i=2*pi*n(k)/(N_i+1);
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -