Channel Filtering Using a For Loop
This example filters input data through a Rayleigh fading channel within a for loop. It uses the small data sets from successive iterations to create an animated effect. The Rayleigh fading channel has two discrete major paths. For information on filtering data through a channel multiple times while maintaining continuity from one invocation to the next, see Configuring Channel Objects Based on Simulation Needs.
Set up parameters. Specify a bit rate of 50e3 Hz, and a loop iteration count of 125. Create a QPSK modulator and Rayleigh fading channel objects.
bitRate = 50000; % Data rate is 50 kb/s numTrials = 125; % Number of iterations of loop M = 4; % QPSK modulation order qpskMod = comm.QPSKModulator; rayChan = comm.RayleighChannel('SampleRate',bitRate,'MaximumDopplerShift',4,'PathDelays',[0 2e-5],'AveragePathGains',[0 -9]);
Initialize a scatter plot.
scatterPlot = comm.ConstellationDiagram;
Apply channel in a loop, maintaining continuity. Plot only the current data in each iteration.
for n = 1:numTrials tx = randi([0 M-1],500,1); % Generate random bit stream pskSig = qpskMod(tx); % PSK modulate signal fadedSig = rayChan(pskSig); % Apply channel effects % Plot the new data from this iteration. update(scatterPlot,fadedSig); end