parameter_gaussian.m
来自「Suzuki信道仿真,用于多路径信道衰落.综合大尺度衰落和小尺度衰落.可用来仿真」· M 代码 · 共 41 行
M
41 行
function[f_i,c_i,theta_i]=Parameter_Gaussian(Method_type,N_i,Variance,fc,kc,phase)
sigma=sqrt(Variance);
if strcmp(Method_type,'MED')==1
n=(1:N_i)';
f_i=kc*fc/(2*N_i)*(2*n-1);
c_i=sigma*sqrt(2)*(sqrt(erf(n*kc*sqrt(log(2))/N_i)-erf((n-1)*kc*sqrt(log(2))/N_i)));
elseif strcmp(Method_type,'MEA')==1
n=(1:N_i)';
f_i=fc/sqrt(log(2))*erfinv(n/N_i);
f_i(N_i)=fc/sqrt(log(2))*erfinv(0.999999);
c_i=sigma*sqrt(2/N_i)*ones(size(n));
elseif strcmp(Method_type,'MCM')==1
n=rand(N_i,1);
f_i=fmax*sin(pi*n/2);
c_i=sigma*sqrt(2/N_i)*ones(size(n));
elseif strcmp(Method_type,'MSEM')==1
n=(1:N_i)';
f_i=kc*fc/(2*N_i)*(2*n-1);
T=N_i/(2*kc*fc);
M=1e3;
t=linspace(0,T,M);
f1=exp(-(pi*fc*t).^2/log(2));
c_i=zeros(size(f_i));
for k=1:length(f_i)
c_i(k)=2*sigma*sqrt(trapz(t,f1.*cos(2*pi*f_i(k)*t))/T);
end
elseif strcmp(Method_type,'MEDS')==1
n=(1:N_i)';
f_i=fc/sqrt(log(2))*erfinv((2*n-1)/(2*N_i));
c_i=sigma*sqrt(2/N_i)*ones(size(n));
else
error('MEthod is unknown')
end
if strcmp(phase,'rand')==1
theta_i=rand(N_i,1)*2*pi;
elseif strcmp(phase,'permuted')==1
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 + =
减小字号Ctrl + -
显示快捷键?