Documentation Center |
Package: comm
Filter input signal through MIMO multipath fading channel
The MIMOChannel System object™ filters an input signal through a multiple-input multiple-output (MIMO) multipath fading channel. This object models both Rayleigh and Rician fading and employs the Kronecker model for modeling the spatial correlation between the links.
The fading processing per link is per the Methodology for Simulating Multipath Fading Channels section and assumes the same parameters for all N_{T}· N_{R} links of the MIMO channel. Each link comprises all multipaths for that link.
To filter an input signal using a MIMO multipath fading channel:
Define and set up your MIMO channel object. See Construction.
Call step to filter the input signal through a MIMO multipath fading channel according to the properties of comm.MIMOChannel. The behavior of step is specific to each object in the toolbox.
H = comm.MIMOChannel creates a multiple-input multiple-output (MIMO) frequency selective or frequency flat fading channel System object, H. This object filters a real or complex input signal through the multipath MIMO channel to obtain the channel impaired signal.
H = comm.MIMOChannel(Name,Value) creates a MIMO channel object, H, with the specified property Name set to the specified Value. You can specify additional name-value pair arguments in any order as (Name1,Value1,...,NameN,ValueN).
SampleRate |
Input signal sample rate (Hertz) Specify the sample rate of the input signal in hertz as a double-precision, real, positive scalar. The default value of this property is 1 Hz. |
PathDelays |
Discrete path delay vector (seconds) Specify the delays of the discrete paths in seconds as a double-precision, real, scalar or row vector. The default value of this property is 0. When you set PathDelays to a scalar, the MIMO channel is frequency flat. When you set PathDelays to a vector, the MIMO channel is frequency selective. |
AveragePathGains |
Average path gain vector (decibels) Specify the average gains of the discrete paths in decibels as a double-precision, real, scalar or row vector. The default value of this property is 0. AveragePathGains must have the same size as PathDelays. |
NormalizePathGains |
Normalize path gains (logical) Set this property to true to normalize the fading processes such that the total power of the path gains, averaged over time, is 0 dB. The default value of this property is true. When you set this property to false, there is no normalization on path gains. The average powers of the path gains are specified by the AveragePathGains property. |
FadingDistribution |
Rayleigh or Rician fading Specify the fading distribution of the channel as one of Rayleigh| Rician. The default value of this property is Rayleigh, i.e., the channel is Rayleigh fading. |
KFactor |
Rician K-factor scalar or vector (linear scale) Specify the K factor of a Rician fading channel as a double-precision, real, positive scalar or nonnegative, nonzero row vector of the same length as PathDelays. This property applies when you set the FadingDistribution property to Rician. The default value of this property is 3. If KFactor is a scalar, the first discrete path is a Rician fading process with a Rician K factor of KFactor. The remaining discrete paths are independent Rayleigh fading processes. If KFactor is a row vector, the discrete path corresponding to a positive element of the KFactor vector is a Rician fading process with a Rician K factor specified by that element. The discrete path corresponding to a zero-valued element of the KFactor vector is a Rayleigh fading process. |
DirectPathDopplerShift |
Doppler shift(s) of line-of-sight component(s) (Hertz) Specify the Doppler shifts for the line-of-sight components of a Rician fading channel in hertz as a double-precision, real scalar or row vector. The default value of this property is 0. This property applies when you set the FadingDistribution property to Rician. DirectPathDopplerShift must have the same size as KFactor. If DirectPathDopplerShift is a scalar, this value represents the line-of-sight component Doppler shift of the first discrete path. This path exhibits a Rician fading process. If DirectPathDopplerShift and KFactor are row vectors, the discrete path corresponding to a positive element of the KFactor vector is a Rician fading process. Its line-of-sight component Doppler shift is specified by the corresponding element of DirectPathDopplerShift. |
DirectPathInitialPhase |
Initial phase(s) of line-of-sight component(s) (radians) Specify the initial phases of the line-of-sight components of a Rician fading channel in radians as a double precision, real scalar or row vector. The default value of this property is 0. This property applies when you set the FadingDistribution property to Rician. DirectPathInitialPhase must have the same size as KFactor. If DirectPathInitialPhase is a scalar, this value represents the line-of-sight component initial phase of the first discrete path. This path exhibits a Rician fading process. If DirectPathInitialPhase and KFactor are row vectors, the discrete path corresponding to a positive element of the KFactor vector is a Rician fading process. Its line-of-sight component initial phase is specified by the corresponding element of DirectPathInitialPhase. |
MaximumDopplerShift |
Maximum Doppler shift (Hertz) Specify the maximum Doppler shift for all channel paths in hertz as a double precision, real, nonnegative scalar. The default value of this property is 0.001 Hz. The Doppler shift applies to all the paths of the channel. When you set the MaximumDopplerShift to 0, the channel remains static for the entire input. You can use the reset method to generate a new channel realization. The MaximumDopplerShift must be smaller than SampleRate/10/f_{c} for each path, where f_{c} represents the cutoff frequency factor of the path. For a Doppler spectrum type other than Gaussian and BiGaussian, the value of f_{c} is 1. For these two Doppler spectrum types, f_{c} is dependent on the Doppler spectrum structure fields. See Algorithms for more details about how f_{c} is defined. |
DopplerSpectrum |
Doppler spectrum Specify the Doppler spectrum shape for the path(s) of the channel. This property accepts a single Doppler spectrum structure returned from the doppler function or a row cell array of such structures. The maximum Doppler shift value necessary to specify the Doppler spectrum/spectra is given by the MaximumDopplerShift property. This property applies when you set the MaximumDopplerShift property value greater than 0. The default value of this property is doppler('Jakes'). If you assign a single Doppler spectrum structure to DopplerSpectrum, all paths have the same specified Doppler spectrum. Select from the following:
If you assign a row cell array of different Doppler spectrum structures (which can be chosen from any of those in the previous list) to DopplerSpectrum, each path has the Doppler spectrum specified by the corresponding structure in the cell array. In this case, the length of DopplerSpectrum must be equal to the length of PathDelays. Alternatively, you can specify DopplerSpectrum as a single Doppler spectrum object or a row vector of such objects that must have a length equal to the length of PathDelays. The possible Doppler spectrum objects are
This object supports C code generation. To generate C code, specify this property to a single Doppler spectrum structure. |
SpatialCorrelation |
Spatial correlation Set this property to true to specify the transmit and receive spatial correlation matrices from which the number of transmit and receive antennas can be derived. Set this property to false to specify the number of transmit and receive antennas instead. In this case, the transmit and receive spatial correlation matrices are both identity matrices. The default value of this property is true. |
NumTransmitAntennas |
Number of transmit antennas Specify the number of transmit antennas as a numeric, real, positive integer scalar between 1 and 8, inclusive. This property applies when you set the SpatialCorrelation property to false. The default value of this property is 2. |
NumReceiveAntennas |
Number of receive antennas Specify the number of receive antennas as a numeric, real, positive integer scalar between 1 and 8, inclusive. This property applies when you set the SpatialCorrelation property to false. The default value of this property is 2. |
TransmitCorrelationMatrix |
Transmit correlation matrix (or 3D array) Specify the spatial correlation of the transmitter as a double-precision, real or complex, 2D matrix or 3D array. The default value of this property is [1 0;0 1]. This property applies when you set the SpatialCorrelation property to true. The first dimension of TransmitCorrelationMatrix determines the number of transmit antennas, N_{t}. This dimension must be a value between 1 and 8, inclusive. If the channel is frequency flat, i.e., PathDelays is a scalar, TransmitCorrelationMatrix is a 2D Hermitian matrix of size N_{t}-by-N_{t}. The main diagonal elements must be all ones. The off-diagonal elements must be real or complex numbers with a magnitude smaller than or equal to one. If the channel is frequency selective, i.e., PathDelays is a row vector of length N_{p}, you can specify TransmitCorrelationMatrix as an N_{t}-by-N_{t} matrix. In this case, each path has the same transmit spatial correlation matrix. Alternatively, you can specify the value as a 3D array of size N_{t}-by-N_{t}-by-N_{p}. In this case, each path can have its own transmit spatial correlation matrix. |
ReceiveCorrelationMatrix |
Receive correlation matrix (or 3D array) Specify the spatial correlation of the receiver as a double-precision, real or complex, 2D matrix or 3D array. The default value of this property is [1 0;0 1]. This property applies when you set the SpatialCorrelation property to true. The first dimension of ReceiveCorrelationMatrix determines the number of receive antennas, N_{r}. This dimension must be a value between 1 and 8, inclusive. If the channel is frequency flat, i.e., PathDelays is a scalar, ReceiveCorrelationMatrix is a 2D Hermitian matrix of size N_{r}-by-N_{r}. The main diagonal elements must be all ones. The off-diagonal elements must be real or complex numbers with a magnitude smaller than or equal to one. If the channel is frequency selective, i.e., PathDelays is a row vector of length N_{p}, you can specify ReceiveCorrelationMatrix as an N_{r}-by-N_{r} matrix. In this case, each path has the same receive spatial correlation matrix. Alternatively, you can specify the value as a 3D array of size N_{r}-by-N_{r}-by-N_{p}. In this case, each path can have its own receive spatial correlation matrix. |
AntennaSelection |
Optional transmit and/or receive antenna selection Specify the antenna selection scheme as one of Off | Tx | Rx | Tx and Rx. The default value of this property is Off. Tx represents transmit antennas and Rx represents receive antennas. When you configure any antenna selection other than the default setting, the object requires one or more inputs to specify which antennas are selected for signal transmission. Refer to the algorithm section for more details about antenna selection. Refer to the Antenna Selection section for more details about antenna selection. |
NormalizeChannelOutputs |
Normalize channel outputs (logical) Set this property to true to normalize the channel outputs by the number of receive antennas. The default value of this property is true. When you set this property to false, there is no normalization for channel outputs. |
RandomStream |
Source of random number stream Specify the source of random number stream as one of Global stream | mt19937ar with seed. The default value of this property is Global stream. If you set RandomStream to Global stream, the current global random number stream is used for normally distributed random number generation. In this case, the reset method only resets the filters. If you set RandomStream to mt19937ar with seed, the mt19937ar algorithm is used for normally distributed random number generation. In this case, the reset method not only resets the filters but also reinitializes the random number stream to the value of the Seed property. |
Seed |
Initial seed of mt19937ar random number stream Specify the initial seed of a mt19937ar random number generator algorithm as a double precision, real, nonnegative integer scalar. The default value of this property is 73. This property applies when you set the RandomStream property to mt19937ar with seed. The Seed reinitializes the mt19937ar random number stream in the reset method. |
PathGainsOutputPort |
Enable path gain output (logical) Set this property to true to output the channel path gains of the underlying fading process. The default value of this property is false. |
clone | Create MIMOChannel object with same property values |
getNumInputs | Number of expected inputs to step method |
getNumOutputs | Number of outputs from step method |
isLocked | Locked status for input attributes and nontunable properties |
release | Allow property value and input characteristics changes |
reset | Reset states of the MIMOChannel object |
step | Filter input signal through MIMO multipath fading channel |
The fading processing per link is per the Methodology for Simulating Multipath Fading Channels section and assumes the same parameters for all N_{T}· N_{R} links of the MIMO channel. Each link comprises all multipaths for that link.
The Kronecker model assumes that the spatial correlations at the transmit and receive sides are separable. Equivalently, the direction of departure (DoD) and directions of arrival (DoA) spectra are assumed to be separable. The full correlation matrix can then be obtained as:
where:
The ⊗ symbol represents the Kronecker product.
R_{t} represents the correlation matrix at the transmit side, i.e. , of size N_{t}-by-N_{t}.
R_{r} represents the correlation matrix at the receive side, i.e. , of size N_{r}-by-N_{r}.
You can obtain a realization of the MIMO channel matrix as:
where: A = unvec(a) is an N_{r}-by-N_{t} matrix of i.i.d. complex Gaussian variables with zero mean and unit variance.
The following information explains how this object determines the cutoff frequency factor, f_{c} for different Doppler spectrum types:
For any Doppler spectrum type, other than Gaussian and BiGaussian, f_{c} equals 1.
For a Gaussian Doppler spectrum type, f_{c} equals the Doppler spectrum structure NormalizedStandardDeviations field value times sqrt(2∙log(2)).
For a BiGaussian Doppler spectrum type:
If the Doppler spectrum structure PowerGains field is [0,0], then f_{c} equals the SigmaGaussian2 (SigmaGaussian1) property value times sqrt(2∙log(2)).
If the CenterFreqGaussian1 and CenterFreqGaussian2 property values are both 0 and the SigmaGaussian1 and SigmaGaussian2 property values are the same, then f_{c} is also equal to the SigmaGaussian2 property value times sqrt(2∙log(2)).
In all other cases, f_{c} equals 1.
When the object is in antenna selection mode, it uses the following algorithms to process an input signal:
The random path gains are always generated and keep evolving for each link, no matter whether the links is being selected or not. The path gain values for the non-selected links are marked as NaN in the path gain output.
The spatial correlation only applies to the selected transmit and/or receive antennas, and the correlation coefficients are the corresponding entries in the transmit and/or receive correlation matrices. In other words, the spatial correlation matrix for the selected transmit/receive antennas is a submatrix of the TransmitCorrelationMatrix/ReceiveCorrelationMatrix property value.
The input filtering through the path gains only happens to the selected links. Channel output normalization happens over the number of selected receive antennas.
[1] Oestges, C., and B. Clerckx. MIMO Wireless Communications: From Real-World Propagation to Space-Time Code Design, Academic Press, 2007.
[2] Correira, L. M. Mobile Broadband Multimedia Networks: Techniques, Models and Tools for 4G, Academic Press, 2006.
[3] Kermoal, J. P., 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 Communications. Vol. 20, Number 6, 2002, pp. 1211–1226.
[4] Jeruchim, M., P. Balaban, and K. S. Shanmugan. Simulation of Communication Systems, Second Edition, New York, Kluwer Academic/Plenum, 2000.
comm.AWGNChannel | comm.LTEMIMOChannel | comm.RayleighChannel | comm.RicianChannel