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

mimo::LsdDecoder Class Reference

#include <mimo-lsd-decoder.h>

Inheritance diagram for mimo::LsdDecoder:

Inheritance graph
[legend]
List of all members.

Public Member Functions

 LsdDecoder (int deviceID, simth::DeviceSystemIntf *system, const simth::PropertyList &pl)
virtual ~LsdDecoder ()
virtual int getDataLength (int codedLength) const
virtual int getCodeLength (int rawLength) const
virtual void Decode (const CVectorSeq &input_vectors, const MatrixFreqSignal &channel_estimation, simth::ModSeq &output_symbols, simth::ModSeq *output_softout)
virtual void decodeOut (CVector &invec, CMatrix &IsIMatrix, CVector &alpha)
virtual CMatrix calcGmmse (CMatrix &IsIMatrix, CMatrix &Lambda)
void setSNR (double snr)

Related Functions

(Note that these are not member functions.)

 propertylist_LsdDecoder (not_a_function)

Detailed Description

This is an implementation of a linear decoder for "Linear Scalable Dispersion" (LSD) codes by Kuhn, Hammerstroem, Wittneben. This implementation was written by Xin Qi.


Constructor & Destructor Documentation

mimo::LsdDecoder::LsdDecoder int  deviceID,
simth::DeviceSystemIntf system,
const simth::PropertyList pl
 

virtual mimo::LsdDecoder::~LsdDecoder  )  [virtual]
 


Member Function Documentation

virtual int mimo::LsdDecoder::getDataLength int  codedLength  )  const [virtual]
 

This method has to be implemented in a derived class.

Returns the length of an uncoded input sequence for the given length of the coded output sequence.

If the coded length does fit (codedLength codedBitsPerStep() == 0) the function the function returns the length of a data sequence which is encoded by the coder from a coded sequence of the given length. In general the function returns the maximal length of a data sequence whose encoded length is smaller or equal code_length.

Parameters:
codedLength length of the coded input sequence
Returns:
required length of the output sequence

Implements mimo::Decoder.

virtual int mimo::LsdDecoder::getCodeLength int  rawLength  )  const [virtual]
 

This method has to be implemented in a derived class.

Returns the length of a coded output sequence for a given length of the uncoded input sequence.

If the data length does not fit (dataLength dataBitsPerStep() != 0) an FitErr exception is thrown, which should be caught in the scope calling the function.

Parameters:
rawLength length of the data sequence
Returns:
allocated length of the coded sequence

Implements mimo::Decoder.

virtual void mimo::LsdDecoder::Decode const CVectorSeq input_vectors,
const MatrixFreqSignal channel_estimation,
simth::ModSeq output_symbols,
simth::ModSeq output_softout
[virtual]
 

Encodes the given sequence of symbols into the given output sequence of vectors.

This is the main method that has to be implemented in a derived class.

Parameters:
input_vectors The received signal vectors
channel_estimation The channel matrix estimates, one for each received vector.
output_symbols The sequence of resulting output symbols
output_softout May be Null. The sequence of resulting softout reliability measures, one for each resulting output symbols. If this is Null, your implementation may not touch this. If this is non-Null, then either you have to calculate the softout values, or you have to fill this sequence with zeros. WATCH OUT: This output should contain the square root of the softout reliability information, but as complex numbers (Since 2004-11-02). The reason for this is that the Simthetic Demodulator devices expect a channel estimation input and use its squared magnitude as reliability information -- so by providing the expected values at this output interface, we can directly connect this output interface to the channel estimation input interface of the demodulator device here in simthetic.

Implements mimo::Decoder.

virtual void mimo::LsdDecoder::decodeOut CVector invec,
CMatrix IsIMatrix,
CVector alpha
[virtual]
 

The received vector is decoded here

virtual CMatrix mimo::LsdDecoder::calcGmmse CMatrix IsIMatrix,
CMatrix Lambda
[virtual]
 

This function calculates the MMSE matrix

void mimo::LsdDecoder::setSNR double  snr  ) 
 

Callback function that sets the signal-to-noise ratio to 'snr', while the signal power is kept constant.


Friends And Related Function Documentation

propertylist_LsdDecoder not_a_function   )  [related]
 

These are the properties of class LsdDecoder . 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::Decoder ; direct link to its propertylist should be propertylist_Decoder(). 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.

nr_rx
<unsigned>, default "" -- Number of receive antennas.

nr_tx
<unsigned>, default "" -- Number of transmit antennas.

2 properties in this class. The above properties have been inherited from the base class mimo::Decoder .

nr_nu
<unsigned>, default "" -- Number of symbols over one OFDM subcarrier

snr
<string>, default "" -- SNR

nr_ni
<unsigned>, default "" -- Number of input symbols befor outer coding

nr_ns
<unsigned>, default "" -- Number of OFDM subcarriers

nr_nc
<unsigned>, default "" -- Number of symbols after outer coding

mod_symb
<unsigned>, default "" -- Number of symbols used for modulation

x_cc
<int>, default "1" -- Parameter for LsdAlgorithm

a_cc
<double>, default "3.4" -- Parameter for LsdAlgorithm

prob_thresh
<double>, default "0" -- The threshhold for the errorprob.

9 properties in this class.


Generated on Tue Aug 9 14:44:09 2005 for mimolib by  doxygen 1.4.1