📄 parameter_gaussian.m
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -