I am trying to simulate the Bit Error rate (BER) vs. Signal-to-noise (SNR) ratio of vehicle-to-vehicle communication using the IEEE 802.11p standard to determine how the BER vs SNR is influenced by node mobility (vehicle mobility) as well as how the BER is influenced by different transmission channels such as AWGN, Rayleigh, and Rician fading channels using MATLAB.
I've been successful in generating the 802.11p signal using MATLAB's WLAN Toolbox as well as transmitting it through the AWGN channel. However, I am having struggles trying to implement the Rayleigh and Rician fading channels using the Communications Toolbox comm.RayleighChannel and comm.RicianChannel. I don't understand the dopplerSpectrum as well as the difference between the MaximumDopplerShift (in both the Rician and Rayleigh parameter list) and the DirectPathDopplerShift in the Rician channel.
I've been using the formula fd = (v*fc)/c to calculate the doppler shift where v is the velocity of the node fc is the carrier frequency and c is the speed of light. Based on this result, I don't know what the difference is between the maximum doppler shift and the direct path doppler shift since I would think that the direct path doppler shift would always be the maximum doppler shift when the node is moving directly toward the stationary receiver. I've tried keeping the Maximum doppler shift constant assuming that the fastest a vehicle would travel for my simulation would be 130km/h and then calculating the doppler shift of the vehicle at different speeds using the equation above and then assigning it to the Direct path doppler shift in the rician channel. However, this doesn't seem to work correctly.
The other issue is that the Rayleigh channel does not have a Direct path doppler shift, rather it has just the Maximum doppler shift parameter. Therefore, I am unsure how to incorporate the doppler shift of a node at different speeds in this channel. I've tried assigning the doppler shift calculated from the equation mentioned previously based on different node speeds to the Maximum doppler shift parameter. This unfortunately has not yielded the desired outcome.
[This is the expected result in the Rician channel at a node speed of 0km/h] https://i.stack.imgur.com/QZ9dQ.png)
This is the result of my simulation at a node speed of 0km/h
The current configuration of the channels is shown below:
kph_max = 130; % in km/h
kph = 0; % in km/h
maxVehicleSpeed = kph_max / 3.6; % Max speed of Vehicle in m/s
vehicleSpeed = kph / 3.6; % Speed of Vehicle in m/s
carrierFrequency = 5.9e9; % WLAN carrier frequency in Hz
maxDopplerShift = (maxVehicleSpeed * carrierFrequency) / physconst("LightSpeed");
dopplerShift = (vehicleSpeed * carrierFrequency) / physconst("LightSpeed");
pathDelays = [0 100 167 500]*1e-9;
avgPathGains = [0 -10 -15 -20];
dopplerSpectrum = doppler('Jakes');
ricianchan = comm.RicianChannel();
ricianchan.SampleRate = fs;
ricianchan.NormalizePathGains = false;
ricianchan.PathDelays = pathDelays;
ricianchan.AveragePathGains = avgPathGains;
ricianchan.KFactor = 5;
ricianchan.DopplerSpectrum = dopplerSpectrum;
ricianchan.MaximumDopplerShift = maxDopplerShift
rayleighchan = comm.RayleighChannel();
rayleighchan.SampleRate = fs;
rayleighchan.NormalizePathGains = false;
rayleighchan.PathDelays = pathDelays;
rayleighchan.AveragePathGains = avgPathGains;
rayleighchan.DopplerSpectrum = dopplerSpectrum;
rayleighchan.MaximumDopplerShift = dopplerShift;
rayleighchan.PathGainsOutputPort = true;
rayleighchan.RandomStream = 'Global stream';
Any assistance would be appreciated.