Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members | Related Pages

mimo::FadingMIMOChannel Class Reference

MIMOChannel for statistical fading model. More...

#include <fadingmimochannel.h>

Inheritance diagram for mimo::FadingMIMOChannel:

Inheritance graph
[legend]
List of all members.

Public Member Functions

 FadingMIMOChannel (int deviceID, DeviceSystemIntf *system, const simth::PropertyList &pl)
 constructor

virtual ~FadingMIMOChannel ()
 destructor

virtual void refresh ()
 determines new random transfer factors

void getTransfer (int relative_time, MatrixFreqSignal &trans) const
void transmit (const VectorTimeSignal &sym, VectorTimeSignal &outsym)
 transmits a symbol sequence over the channel

virtual void print (std::ostream &os) const

Protected Attributes

double sigma
 scale factor sigma of rayleigh distribution

RayleighRng ray
 pointer to a Rayleigh distributed random variable

double normFactor
 Stores the normalization factor.

simthlib::OfdmReceiverofdm_recv
simthlib::OfdmTransmitterofdm_trans
unsigned num_carrier
double carrier_dist
unsigned maxantenna
std::vector< TimeSignal::storage_type * > time_samples
std::vector< ModSeq * > freq_samples
CVectorSeq::storage_type freq_vectors_in
CVectorSeq::storage_type freq_vectors_out

Related Functions

(Note that these are not member functions.)

 propertylist_FadingMIMOChannel (not_a_function)

Detailed Description

MIMOChannel for statistical fading model.

This specific class has Rayleigh Fading in the amplitude, but zero phase rotation. For the usual Gaussian fading you will probably prefer to use CmplFadingChannel.

This channel and its derived classes can either be used as a flat-fading/narrowband channel, or as a broadband Rayleigh fading channel.

For a flat-fading/narrowband channel, at each refresh() one new transfer factor $H_0$ is diced. The channel transfer function then is constant over all frequency, $H(f)=H_0$, and the channel impulse response is simply a multiplication with this one transfer factor. This mode of operation is chosen by specifying the Property num_carrier to be one (default).

Alternatively, this channel and its derived classes can be used as a broadband Rayleigh fading channel, so that for a specific OFDM system each subcarrier will undergo an i.i.d. fading. However, this requires this block to know the parameters of the surrounding OFDM system exactly. Hence, the Properties num_carrier, oversampling, carrier_dist, and guard_time have to be specified identically to the OFDM transmitter/receiver blocks. In this mode of operation, at each refresh() a new channel transfer function is diced with $K$=num_carrier different i.i.d. random variables $H_k$ at each subcarrier k, resulting in $H(f_k)=H_k, k=0,\ldots,K-1$ where each $f_k$ is the frequency of subcarrier k.


Constructor & Destructor Documentation

mimo::FadingMIMOChannel::FadingMIMOChannel int  deviceID,
DeviceSystemIntf *  system,
const simth::PropertyList pl
 

constructor

virtual mimo::FadingMIMOChannel::~FadingMIMOChannel  )  [virtual]
 

destructor


Member Function Documentation

virtual void mimo::FadingMIMOChannel::refresh  )  [virtual]
 

determines new random transfer factors

Reimplemented from simth::Device.

Reimplemented in mimo::CmplFadingMIMOChannel.

void mimo::FadingMIMOChannel::getTransfer int  relative_time,
MatrixFreqSignal trans
const [virtual]
 

Determines channel transfer factors. An ideal estimation of the channel transfer function is performed. This means, the exact values $H(f_i,t_0)$ are determined, where $t_0$ is ${\tt time} * {\tt delta\_t}$ and $f_i = n\cdot \mbox{\tt delta\_f}, n=0, \dots, \mbox{\tt num\_f}-1$. (time = 0 indicates the transmission time of the sample transmitted at last over the channel; time = -numSamples indicates the transmission time of the first sample of the last transmitted sequence.

Implements mimo::MIMOChannel.

void mimo::FadingMIMOChannel::transmit const VectorTimeSignal sym,
VectorTimeSignal outsym
[virtual]
 

transmits a symbol sequence over the channel

Implements mimo::MIMOChannel.

virtual void mimo::FadingMIMOChannel::print std::ostream &  os  )  const [virtual]
 

Reimplemented from mimo::MIMOChannel.

Reimplemented in mimo::CmplFadingMIMOChannel.


Friends And Related Function Documentation

propertylist_FadingMIMOChannel not_a_function   )  [related]
 

These are the properties of class FadingMIMOChannel . This list is auto-generated from the XML-Devicelist of this device by means of an XSLT transformation script.

Description of this device in the XML file:

Note that this class also has the Properties of its base classes. The direct base class is mimo::MIMOChannel ; direct link to its propertylist should be propertylist_MIMOChannel(). The list below usually includes the properties that have been inherited from the base classes; the properties which belong only to this class can be found at the end of this list.

snr
<string>, default "" -- The name of the snr loop variable in this simulation.

channel_refresh
<string>, default "" -- The name of the refresh loop variable in this simulation.

nr_tx
<unsigned>, default "" -- The number of transmit antennas

nr_rx
<unsigned>, default "" -- The number of receive antennas

diagonal
<bool>, default "false" -- If true, then this channel has a diagonal channel matrix i.e. it is not a MIMO channel.

5 properties in this class. The above properties have been inherited from the base class mimo::MIMOChannel .

sigma
<double>, default "1.0" -- The scaling factor for the variation of the Rayleigh distribution of the transfer factors. This corresponds to the standard deviation (square root of variance) of the real and of the imaginary part, respectively.

oversampling
<unsigned>, default "1" -- The oversampling rate used by the IDFT (IFFT)

num_carrier
<unsigned>, default "1" -- The number of subcarriers for which i.i.d. Gaussian random variables are added together.

carrier_dist
<double>, default "0.0" -- The subcarrier distance on which i.i.d. Gaussians are added together.

guard_time
<double>, default "0.0" -- The time duration of your guard interval in seconds.

5 properties in this class.


Member Data Documentation

double mimo::FadingMIMOChannel::sigma [protected]
 

scale factor sigma of rayleigh distribution

RayleighRng mimo::FadingMIMOChannel::ray [protected]
 

pointer to a Rayleigh distributed random variable

double mimo::FadingMIMOChannel::normFactor [protected]
 

Stores the normalization factor.

simthlib::OfdmReceiver* mimo::FadingMIMOChannel::ofdm_recv [protected]
 

simthlib::OfdmTransmitter* mimo::FadingMIMOChannel::ofdm_trans [protected]
 

unsigned mimo::FadingMIMOChannel::num_carrier [protected]
 

double mimo::FadingMIMOChannel::carrier_dist [protected]
 

unsigned mimo::FadingMIMOChannel::maxantenna [protected]
 

std::vector<TimeSignal::storage_type*> mimo::FadingMIMOChannel::time_samples [protected]
 

std::vector<ModSeq*> mimo::FadingMIMOChannel::freq_samples [protected]
 

CVectorSeq::storage_type mimo::FadingMIMOChannel::freq_vectors_in [protected]
 

CVectorSeq::storage_type mimo::FadingMIMOChannel::freq_vectors_out [protected]
 


Generated on Fri Jul 23 16:27:51 2004 for mimolib by doxygen 1.3.2