?? sim.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 + -