Products & Services Solutions Academia Support User Community Company

Learn more about Communications Toolbox   

mimochan - Create MIMO fading channel object

Syntax

chan = mimochan(nt, nr, ts, fd)
chan = mimochan(nt, nr, ts, fd, tau)
chan = mimochan(nt, nr, ts, fd, tau, pdb)

Description

chan = mimochan(nt, nr, ts, fd) constructs a multiple-input multiple-output (MIMO) Rayleigh fading channel object with a single path link.

You can model the effect of the channel, chan, on a signal x by using the syntax y = filter(chan, x), where the input signal x has nt columns, and the output signal y has ns columns. See filter (mimo) for more information.

chan = mimochan(nt, nr, ts, fd, tau) constructs a MIMO fading channel object with a frequency selective multipath link that models each discrete path as an independent Rayleigh fading process with the same average gain. tau represents a row vector of path delays, each specified in seconds

chan = mimochan(nt, nr, ts, fd, tau, pdb) specifies pdb as a row vector of average path gains, each in dB.

Properties

A MIMO fading channel object has the properties shown in the following table. You can write to all properties except for the ones explicitly noted otherwise.

PropertyDescription
NumTxAntennasNumber of transmit antennas, between 1 and 8.
NumRxAntennasNumber of receive antennas, between 1 and 8.
InputSamplePeriodSample period of the signal on which the channel acts, measured in seconds.
DopplerSpectrumAny Doppler spectrum objects. This property defaults to a Jakes Doppler object. Must either be a single Doppler object or a vector of Doppler objects with the same length as PathDelays.
MaxDopplerShiftMaximum Doppler shift of the channel, in hertz (applies to all paths of a channel).
PathDelaysVector listing the delays of the discrete paths, in seconds. This value defaults to 0.
AvgPathGaindBVector listing the average gain of the discrete paths, in dB. Must be of the same size as PathDelays. This value defaults to 0.
TxCorrelationMatrixTransmit correlation matrix, hermitian, of size NumTxAntennas by NumTxAntennas (or 3-D array, with one correlation matrix per path). The default is an identity matrix.
RxCorrelationMatrixReceive correlation matrix, hermitian, of size NumRxAntennas by NumRxAntennas (or 3-D array, with one correlation matrix per path). This value defaults to an identity matrix.
KFactorRician K-factor (scalar or vector). This value defaults to 0 (Rayleigh fading).
DirectPathDopplerShiftAny Doppler shifts of the line-of-sight components in hertz. This value defaults to 0.
DirectPathInitPhaseAny Initial phases of line-of-sight components in radians. This value defaults to 0.
ResetBeforeFilteringIf this value is 1, each call to filter resets the state of the channel object before filtering. If it is 0, the fading process maintains continuity from one call to the next. This value defaults to 1.
NormalizePathGainsIf this value is 1, the fading process is normalized such that the expected value of the path gains' total power is 1. This value defaults to 1.
StorePathGainsIf this value is 1, the complex path gain array is stored as the channel filter function processes the signal. This value defaults to 0.
ChannelTypeFixed value, 'MIMO'. This property is not writable.
PathGainsComplex array of size Ns by L by NumTxAntennas by NumRxAntennas (where Ns is the number of samples and L is the length of PathDelays), listing the current gains of the discrete paths for each combination of transmit/receive antennas. This property is not writable.
ChannelFilterDelayDelay of the channel filter, measured in samples. This property is not writable.
NumSamplesProcessedNumber of samples the channel processed since the last reset. When you create or reset chan, this property value is 0. This property is not writable.

Relationships Among Properties

Changing the length of PathDelays also changes:

Changing the length of PathDelays also changes:

Rayleigh and Rician Fading

If KFactor is a scalar value, then the first discrete path indicates a Rician fading process (it contains a line-of-sight component) with a K-factor (defined by the value for KFactor). The remaining discrete paths are independent Rayleigh fading processes (no line-of-sight component). If KFactor is a vector of the same size as PathDelays, then each discrete path indicates a Rician fading process with a K-factor given by the corresponding element of the vector KFactor.

DirectPathDopplerShift must be the same size as KFactor. If KFactor and DirectPathDopplerShift are scalar values, the line-of-sight component of the first discrete path has a Doppler shift of DirectPathDopplerShift, while the remaining discrete paths indicate independent Rayleigh fading processes. If DirectPathDopplerShift is a vector of the same size as KFactor, the line-of-sight component of each discrete path has a Doppler shift given by the corresponding element of the vector DirectPathDopplerShift.

You can set any initial phases of the line-of-sight components through the property DirectPathInitPhase.

Methods

A MIMO fading channel object has the following methods.

filter

This method filters data through the MIMO fading channel object.

y = filter(chan, x) filters data through the MIMO channel, where the input x is a matrix of size Ns by nt. The output, y, is a matrix of size Ns by nr. For these matrices, Ns is the number of samples, nt is the number of transmit antennas, and nr is the number of receive antennas.

reset

This method resets the MIMO channel object.

reset(chan) resets the MIMO channel object, chan, initializing the PathGains and NumSamplesProcessed properties as well as internal filter states. This is useful when you want the effect of creating a new channel.

reset(chan,randstate) resets the MIMO channel object, chan and initializes the state of the random number generator, randstate, that the channel uses. randstate is a two-element column vector or a scalar integer. This is useful when you want to repeat previous numerical results that started from a particular state.

Examples

The following example creates a MIMO channel object with two transmit and receive antennas, three paths, Rician K-factor greater than zero, and specific correlation matrices. First create the channel object using the mimochan function, as shown below:

chan = mimochan(2, 2, 1e-4, 60, [0 2.5e-4 3e-4], [0 -2 -3])

mimochan returns the following channel:

chan = 

               ChannelType: 'MIMO'
             NumTxAntennas: 2
             NumRxAntennas: 2
         InputSamplePeriod: 1.0000e-004
           DopplerSpectrum: [1x1 doppler.jakes]
           MaxDopplerShift: 60
                PathDelays: [0 2.5000e-004 3.0000e-004]
             AvgPathGaindB: [0 -2 -3]
       TxCorrelationMatrix: [2x2 double]
       RxCorrelationMatrix: [2x2 double]
                   KFactor: 0
    DirectPathDopplerShift: 0
       DirectPathInitPhase: 0
      ResetBeforeFiltering: 1
        NormalizePathGains: 1
            StorePathGains: 0
                 PathGains: [4-D double]
        ChannelFilterDelay: 4
       NumSamplesProcessed: 0

Now assign the Rician K-factor to the first path, and set the transmit and receive correlation matrices of the MIMO channel object.

chan.KFactor = 2;
chan.TxCorrelationMatrix = [1 0.6; 0.6 1];
chan.RxCorrelationMatrix = [1 0.5*j; -0.5*j 1];

Now we can use this channel to filter data signals. This example sends a series of ones through the channel and stores the output.

y = filter(chan, ones(20, 2));

Plot the channel output signals:

t=(0:19)*chan.InputSamplePeriod;
plot(t,abs(y))
xlabel('Time (s)')
ylabel('Amplitude')
legend('1st antenna output','2nd antenna output')

The figure window displays.

See Also

doppler.bell

References

[1] Jeruchim, M., Balaban, P., and Shanmugan, K., Simulation of Communication Systems, Second Edition, New York, Kluwer Academic/Plenum, 2000.

[2] J. P. Kermoal, L. Schumacher, K. I. Pedersen, P. E. Mogensen, and F. Frederiksen, "A stochastic MIMO radio channel model with experimental validation", IEEE Journal on Selected Areas of Commun., vol. 20, no. 6, pp. 1211—1226, Aug. 2002.

[3] C. Oestges and B. Clerckx, MIMO Wireless Communications: From Real-World Propagation to Space-Time Code Design, Academic Press, 2007.

[4] L. M. Correira, Ed., Mobile Broadband Multimedia Networks: Techniques, Models and Tools for 4G, Academic Press, 2006.

  


Free Early Verification Kit

Learn how to apply early verification to your development process through these technical resources.

How much time do you spend on testing to ensure implementation meets system-level requirements?

 © 1984-2009- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS