Communications System Toolbox 

This example shows how to simulate multipleinput multipleoutput (MIMO) multipath fading channels based on the IEEE® 802.16 channel models for fixed wireless applications. The example uses a MIMO multipath fading channel System object with two transmit antennas, one receive antenna, and a rounded Doppler spectrum object.
On this page… 

IEEE 802.16 Channel Models: Overview 
IEEE 802.16 Channel Models: Overview
The IEEE 802.16 channel models [ 1 ] for fixed wireless applications are proposed for scenarios where the cell radius is less than 10 km, the directional antennas at the receiver are installed undertheeaves/windows or on the rooftop, and the base station (BS) antennas are 15 to 40 m in height. The channel models comprise a set of path loss models including shadowing (suburban, urban) and a multipath fading model, which describes the multipath delay profile, the Kfactor distribution, and the Doppler spectrum. The antenna gain reduction factor, due to the use of directional antennas, is also characterized.
The modified Stanford University Interim (SUI) channel models consist of a set of 6 typical channels used to simulate the IEEE 802.16 channel models (more specifically the 2004 version of the standard for fixed wireless applications). They are proposed for a scenario where: the cell size is 7 km, the BS antenna height is 30 m, the receive antenna height is 6 m, the BS antenna beamwidth is 120 degrees, the receive antenna is either omnidirectional or directional (30 degrees), and only vertical polarization is used.
Each modified SUI channel model has three taps. Each tap is characterized by a relative delay (with respect to the first path delay), a relative power, a Rician Kfactor, and a maximum Doppler shift. Two sets of relative powers are specified for each channel model: one for an omnidirectional antenna, and one for a 30 degrees directional antenna. Furthermore, for each set of relative powers, two different Kfactors are specified, a Kfactor for 90% cell coverage, and a Kfactor for 75% cell coverage. Hence, each of the 6 modified SUI channel models comprises parameters for four distinct scenarios. Each modified SUI channel model is further assigned an antenna correlation, defined as the envelope correlation coefficient between signals received at different antenna elements.
Initialization of SimulationSpecific Parameters
The simulation sampling rate is specified, and kept the same for the remainder of the example. The input to the channel simulator is oversampled by a factor of four.
S = RandStream('swb2712', 'Seed', 12345); % Set a local random number stream M = 2; % Modulation order hModem = modem.pskmod(M); % 2PSK modulator object Rsym = 10e3; % Input symbol rate Rbit = Rsym * log2(M); % Input bit rate Nos = 4; % Oversampling factor Rs = Rbit * Nos; % Input sample rate
The code below constructs a MIMO fading channel System object according to the modified SUI1 channel model, for an omnidirectional antenna and 90% cell coverage.
The channel model has 3 paths: the first path is Rician while the remaining two are Rayleigh. Each path has a rounded Doppler spectrum for its diffuse component: the parameters are as specified in the default doppler.rounded object. While different maximum Doppler shifts are specified for each path in [ 1 ], we use the maximum value of the Doppler shifts for all paths.
We use 2 transmit antennas and 1 receive antenna. Similar to Appendix B of [ 1 ], the correlation coefficient between the two links on each path is taken equal to the antenna spatial correlation.
tau = [0 0.4 0.9]*1e6; % Path delays, in seconds pdb = [0 15 20]; % Average path gains, in dB fd = 0.5; % Maximum Doppler shift for all paths (identical) ds = doppler.rounded; % Doppler spectrum, with default parameters Nt = 2; % Number of transmit antennas Nr = 1; % Number of receive antennas Rt = toeplitz([1 0.7]); % Transmit correlation matrix with correlation coefficient 0.7 kf = 4; % Rician Kfactor on the first path h = comm.MIMOChannel( ... 'SampleRate', Rs, ... 'PathDelays', tau, ... 'AveragePathGains', pdb, ... 'MaximumDopplerShift', fd, ... 'DopplerSpectrum', ds, ... 'TransmitCorrelationMatrix', Rt, ... 'ReceiveCorrelationMatrix', 1, ... 'FadingDistribution', 'Rician', ... 'KFactor', kf, ... 'RandomStream', 'mt19937ar with seed', ... 'Seed', 912, ... 'PathGainsOutputPort', true);
The code below simulates the modified SUI1 channel model.
Nsamp = 1.5e6; % Total number of channel samples Nsamp_f = 1e3; % Number of samples per frame Nframes = Nsamp/Nsamp_f; % Number of frames chanOut = zeros(Nsamp, Nr); pathGains = zeros(Nsamp, length(tau), Nt); for iFrames = 1:Nframes inputSig = modulate(hModem, randi(S, [0 M1], Nsamp_f, Nt)); idx = (1:Nsamp_f)+(iFrames1)*Nsamp_f; [chanOut(idx,:), pathGains(idx,:,:)] = step(h, inputSig); end
The Doppler spectrum of the 1st link of the 2nd path is estimated from the complex path gains and plotted.
Hs = spectrum.welch('Hamming', Nsamp/5, 50); figure; psd(Hs, pathGains(:,2,1), 'Fs', Rs, 'SpectrumType', 'twosided', 'Centerdc', true); axis([0.1/10 0.1/10 80 10]); legend('Simulation');
The theoretical rounded Doppler spectrum is overlaid to the estimated Doppler spectrum. We observe a good fit between both.
f = fd:0.01:fd; a = ds.CoeffRounded; % Parameters of the rounded Doppler spectrum Sd = 1/(2*fd*(a(1)+a(2)/3+a(3)/5))*(a(1)+a(2)*(f/fd).^2+a(3)*(f/fd).^4); Sd = Sd * 10^(pdb(2)/10); % Scaling by average path power hold on; plot(f(Sd>0)/1e3, 10*log10(Sd(Sd>0)), 'k'); legend('Simulation', 'Theory');
The Doppler spectrum for the 2nd link of the 2nd path is also estimated and compared to the theoretical spectrum. We also observe a good fit between both.
figure; psd(Hs, pathGains(:,2,2), 'Fs', Rs, 'SpectrumType', 'twosided', 'Centerdc', true); axis([0.1/10 0.1/10 80 10]); legend('Simulation'); hold on; plot(f(Sd>0)/1e3, 10*log10(Sd(Sd>0)), 'k'); legend('Simulation', 'Theory');
For each path, we plot the fading envelope waveforms of both transmit links. We can observe a correlation between the fading envelopes.
figure; semilogy(abs(pathGains(:,1,1)),'b'); hold on; grid on; semilogy(abs(pathGains(:,1,2)),'r'); legend('First transmit link', 'Second transmit link'); title('Fading envelopes for two transmit links of Path 1'); figure; semilogy(abs(pathGains(:,2,1)),'b'); hold on; grid on; semilogy(abs(pathGains(:,2,2)),'r'); legend('First transmit link', 'Second transmit link'); title('Fading envelopes for two transmit links of Path 2'); figure; semilogy(abs(pathGains(:,3,1)),'b'); hold on; grid on; semilogy(abs(pathGains(:,3,2)),'r'); legend('First transmit link', 'Second transmit link'); title('Fading envelopes for two transmit links of Path 3');
We compute the spatial correlation matrices for each path. We observe that they show a match with the theoretical values Rt. Note that corrcoef function estimate can be improved if Nsamp is increased.
TxCorrMatrixPath1 = corrcoef(pathGains(:,1,1),pathGains(:,1,2)).' TxCorrMatrixPath2 = corrcoef(pathGains(:,2,1),pathGains(:,2,2)).' TxCorrMatrixPath3 = corrcoef(pathGains(:,3,1),pathGains(:,3,2)).'
TxCorrMatrixPath1 = 1.0000 + 0.0000i 0.7323 + 0.0549i 0.7323  0.0549i 1.0000 + 0.0000i TxCorrMatrixPath2 = 1.0000 + 0.0000i 0.7245  0.1246i 0.7245 + 0.1246i 1.0000 + 0.0000i TxCorrMatrixPath3 = 1.0000 + 0.0000i 0.6985  0.0720i 0.6985 + 0.0720i 1.0000 + 0.0000i
IEEE 802.16 Broadband Wireless Access Working Group, "Channel models for fixed wireless applications", IEEE 802.16a03/01, 20030627.