function [chanOut,ChanPara] = PassChan(dataIn,WaveformPara,SysParameters,ChanPara,seed) Chan = comm.RayleighChannel(... 'SampleRate',ChanPara.SampleFs, ... 'PathDelays', ChanPara.delay, ... 'AveragePathGains', ChanPara.PDP, ... 'NormalizePathGains',true, ... 'MaximumDopplerShift',floor(ChanPara.MaximumDopplerShift), ... 'DopplerSpectrum',doppler(ChanPara.doppler), ... 'PathGainsOutputPort',SysParameters.ShowPathGain); [rAddMultipath,~] = Chan(dataIn); % rAddCFO = rAddMultipath.*exp(sqrt(-1)*2*pi*(1:length(rAddMultipath))'*ChanPara.epsilon/N_FFT); SNR = ChanPara.SNR; ChanPara.N0 = WaveformPara.Power_sig/10^(SNR/10); rAddAWGN = awgn(rAddMultipath,SNR,'measured'); chanOut = [sqrt(ChanPara.N0)*(randn(400,1)+1i*randn(400,1));rAddAWGN]; end