📄 parameter_gauss.m
字号:
%--------------------------------------------------------------------
% parameter_Gauss.m -------------------------------------------------
%% Program for the computation of the discrete Doppler frequencies,
% Doppler coefficients, and Doppler phases by using the Gaussian
% power spectral density.
%
% Used m-files: LPNM_opt_Gauss.m, fun_Gauss.m,
% grad_Gauss.m, acf_mue.m
%--------------------------------------------------------------------
% [f_i_n,c_i_n,theta_i_n]=parameter_Gauss(METHOD,N_i,sigma_0_2,...
% f_max,f_c,PHASE,PLOT)
%--------------------------------------------------------------------
% Explanation of the input parameters:
%
% METHOD:
% |----------------------------------------------|------------------|
% | Methods for the computation of the discrete | Input |
% | Doppler frequencies and Doppler coefficients | |
% |----------------------------------------------|------------------|
% |----------------------------------------------|------------------|
% | Method of equal distances (MED) | 'ed_g' |
% |----------------------------------------------|------------------|
% | Mean square error method (MSEM) | 'ms_g' |
% |----------------------------------------------|------------------|
% | Method of equal areas (MEA) | 'ea_g' |
% |----------------------------------------------|------------------|
% | Monte Carlo method (MCM) | 'mc_g' |
% |----------------------------------------------|------------------|
% | Lp-norm method (LPNM) | 'lp_g' |
% |----------------------------------------------|------------------|
% | Method of exact Doppler spread (MEDS) | 'es_g' |
% |----------------------------------------------|------------------|
%
% N_i: number of harmonic functions
% sigma_0_2: average power of the real deterministic Gaussian
% process mu_i(t)
% f_max: maximum Doppler frequency
% f_c: 3-dB-cutoff frequency
%
% PHASE:
% |----------------------------------------------|------------------|
% | Methods for the computation of the Doppler | Input |
% | phases | |
% |----------------------------------------------|------------------|
% |----------------------------------------------|------------------|
% | Random Doppler phases | 'rand' |
% |----------------------------------------------|------------------|
% | Permuted Doppler phases | 'perm' |
% |----------------------------------------------|------------------|
%
% PLOT: plot of the ACF and the PSD of mu_i(t), if PLOT==1
function [f_i_n,c_i_n,theta_i_n]=parameter_Gauss(METHOD,N_i,...
sigma_0_2,f_max,f_c,PHASE,PLOT)
if nargin<7,
error('Not enough input parameters')
end
sigma_0=sqrt(sigma_0_2);
% The frequency range of Gaussian power spectral density must be limited
% the relevant range.
kappa_c=f_max/f_c;
%-------------------- Method of equal distances(MED)-----------------------
if METHOD=='ed_g',
n=(1:N_i)';
f_i_n=kappa_c*f_c/(2*N_i)*(2*n-1); % Formula (5.12) on page 87
c_i_n=sigma_0*sqrt(2)*sqrt(erf(n*kappa_c*...
sqrt(log(2))/N_i)-erf((n-1)*kappa_c*...
sqrt(log(2))/N_i) ); % Formula (5.13) on page 87
K=1;
%-------------------- Mean square error method (MSEM)--------------------
elseif METHOD=='ms_g',
n=(1:N_i)';
f_i_n=kappa_c*f_c/(2*N_i)*(2*n-1); % Formula (5.12) on page 87
tau_max=N_i/(2*kappa_c*f_c);
N=1E3;
tau=linspace(0,tau_max,N);
f1=exp(-(pi*f_c*tau).^2/log(2));
c_i_n=zeros(size(f_i_n));
for k=1:length(c_i_n),
c_i_n(k)=2*sigma_0*sqrt(trapz(tau,f1.*...
cos(2*pi*f_i_n(k)*tau))/tau_max); % Formula (5.24) on page 93
end
K=1;
%------------------------Method of equal areas(MEA)--------------------
elseif METHOD=='ea_g'
n=(1:N_i)';
c_i_n=sigma_0*sqrt(2/N_i)*ones(size(n)); % Formula (5.31) on page 96
f_i_n=f_c/sqrt(log(2))*erfinv(n/N_i);
f_i_n(N_i)=f_c/sqrt(log(2))*erfinv(0.9999999);% Formula (5.42) on page 101
K=1;
%------------------------ Monte Carlo method (MCM)------------------------
elseif METHOD=='mc_g'
n=rand(N_i,1);
f_i_n=f_c/sqrt(log(2))*erfinv(n); % Formula (5.49) on page 112
c_i_n=sigma_0*sqrt(2/N_i)*ones(size(n)); % Formula (5.47) on page 105
K=1;
% ------------------------Lp-norm method (LPNM)------------------------
elseif METHOD=='lp_g',
if exist('fminu')~=2
disp([' =====> This method requires ',...
'the Optimization Toolbox !!'])
return
else
N=1e3;
p=2;
[f_i_n,c_i_n]=LPNM_opt_Gauss(N,f_max,f_c,...
sigma_0_2,p,N_i,PLOT);
K=2;
end
%--------------- Method of exact Doppler spread(MEDS)------------
elseif METHOD=='es_g',
n=(1:N_i)';
c_i_n=sigma_0*sqrt(2/N_i)*ones(size(n)); % Formula (5.73) on page 129
f_i_n=f_c/sqrt(log(2))*erfinv((2*n-1)/(2*N_i)); % Formula (5.76a) on page 131
K=1;
else
error([setstr(10),'Method is unknown'])
end
% Computation of the Doppler phases:
if PHASE=='rand',
theta_i_n=rand(N_i,1)*2*pi;
elseif PHASE=='perm',
n=(1:N_i)';
Z=rand(size(n));
[dummy,I]=sort(Z);
theta_i_n=2*pi*n(I)/(N_i+1);
end
if PLOT==1,
subplot(1,2,1)
stem([-f_i_n(N_i:-1:1);f_i_n],...
1/4*[c_i_n(N_i:-1:1);c_i_n].^2)
xlabel('f (Hz)')
ylabel('Power Spectral Density')
tau_max=N_i/(K*kappa_c*f_c);
tau=linspace(0,tau_max,500);
r_mm=sigma_0_2*exp(-(pi*f_c/sqrt(log(2))*tau).^2);
r_mm_tilde=acf_mue(f_i_n,c_i_n,tau);
subplot(1,2,2)
plot(tau,r_mm,'r-',tau,r_mm_tilde,'g--')
xlabel('tau(s)')
ylabel('Autocorrelation Function')
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -