📄 channel_model.m
字号:
function channel_response = channel_model(option,f_max,N_sim,T_s,T_start)
% Multipath channel model for indoor environment, assuming the channel response is invariant within one frame
% The sampling rate is 20Msps and a threshold level of 20dB below the maximum
% if option = 1, Small office/ Home office enviorment, and the rms delay spread is 0.05us, model tap is 5
% if option = 2, Large office building enviorment, the rms delay spread is 0.1us, model tap is 10
% if option = 3, Factory enviorment, the rms delay spread is 0.2us, model tap is 19
% In the indoor environment, the delay power spectral density is modeled by the classical Jakes power spectral density
% Paramters referred:
% f_max: Maximum Doppler frequency
% N_sim: Simulation time number
% T_s: Channel sampling interval
% T_start: Simulation starting time
% var_rms: rms delay spread
% alp: exponent of the power delay profile
% L : number of multipath
% a(l): delay coefficients of the lth delay path
% t_max: the largest delayed considered, for t > t_max, the delay power is under the threshold and not taken into consideration
% P_thresh: delay power threshold
% Channel parameter calculation %
fs = 20e6; % Signal sampling rate, 20MHz
P_thresh = 30; % Threshold lever, in dB
%option = 1;
%f_max = 91;
%N_sim = 1e2;
%T_s = 4*10^(-6);
%T_start = 4*10^(-6);
if option == 1
fprintf('Simulation is performed assuming the small office/ home office environment.\n');
var_rms = 50 * 10^(-9); % Rms delay spread is 50nsec
L = 5;
else if option ==2
fprintf('Simulation is performed assuming the large office building environment.\n');
var_rms = 100 * 10^(-9); % Rms delay spread is 100nsec
L = 10;
else
fprintf('Simulation is performed assuming the factory environment.\n');
var_rms = 200 * 10^(-9); % Rms delay spread is 200nsec
L = 19;
end
end
alp = -2 * fs * log( sqrt( 1 + 1/( 2 * fs * var_rms )^2 ) - 1/( 2 * fs * var_rms));
P_thresh = 10^(P_thresh/10); % Change dB into linear metric
t_max = log(P_thresh)/alp; % P(t) = alp * exp(-alp * t)
t1=0;
t2=0;
for l = 1 : L
if l == 1
T1 = 0;
T2 = 1/fs/2;
else if l == L
T1 = 1/fs * (L-1) - 1/fs/2;
T2 = t_max;
else
T1 = 1/fs * (l-1) - 1/fs/2;
T2 = 1/fs * (l-1) + 1/fs/2;
end
end
a(l) = exp(-alp * T1) - exp(-alp * T2);
end
% Frequency selective Rayleigh fading channel model %
% Each path is assumed Jakes power spectrum
N_i = 1e2;
for l = 1:L
[f1,c1,th1] = channel_parameter_Jakes(f_max,N_i);
[f2,c2,th2] = channel_parameter_Jakes(f_max,N_i+1); % Jakes parameter calculation
channel_response(l,:) = channel_Rayleigh(f1,c1,th1,f2,c2,th2,N_sim,T_s,T_start); % Rayleigh fading of each path
channel_response(l,:) = sqrt(a(l)) * channel_response(l,:); % Multiplied by delay coefficients
N_i = N_i + 2; % To assure path independance
end
% For program test only
%z = [0:0.05:5];
%temp = abs(channel_response(1,:));
%p_z=pdf_sim(temp,z,1);
%title('Rayleigh 分布');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -