Matlab
Explain the codes below
% Jake.m
% Generate a frequency selective fading
function [r, iout, qout] = Jake(idata, qdata, nsamp, fs, fc, NN,N1_arr, velocity, counter_arr, delay_time, attn, flat)
%****************************** variables*******************************
% idata input Ich data
% qdata input Qch data
% nsamp Number of samples to be simulated
% fs Sampling frequency (Hz)
% fc Carrier Frequency (Hz)
% NN Number of paths
% N1 Number of waves in order to generate fading
% velocity Mobile speed in Km/h
% counter Fading counter
% delay_time Delay for each fading path (ns)
% attn Attenuation level for different fading paths (dB)
% flat flat fading or not
% r Envelope of fading channel complex impulse response
% iout output Ich data
% qout output Qch data
%************************************************************************
v = velocity./3.6; % m/s
c = 3e8;
fm = fc*v/c; % Maximum doppler frequency (Hz)
delay_samp = round(delay_time.*fs.*1e-9); % normalized delaytime in number of samples
total_attn = sum(10.^(-1.0.*attn./10.0)); % normalize thepower
tstp = 1/fs; % minimum time resolution
iout = zeros(1,nsamp);
qout = zeros(1,nsamp);
r = zeros(1,nsamp);
theta = zeros(1,nsamp);
for i=1:NN
atts = 10.^(-0.05.*attn(i)); % attenuation for current path
 Â
[itmp, qtmp] = delay(idata, qdata, nsamp, delay_samp(i));
[r_single, iout_single, qout_single] = fade2(itmp, qtmp, nsamp,tstp, fm, N1_arr(i), counter_arr(i), flat);
 Â
counter_arr = counter_arr+200; % update counter
 Â
iout = iout + atts.*iout_single./sqrt(total_attn);
qout = qout + atts.*qout_single./sqrt(total_attn);
 Â
end
r = sqrt(iout.^2+qout.^2);