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

mimo::PCSDecoder Class Reference

#include <mimo-pcs-decoder.h>

Inheritance diagram for mimo::PCSDecoder:

Inheritance graph
[legend]
List of all members.

Public Member Functions

 PCSDecoder (int deviceID, simth::DeviceSystemIntf *system, const simth::PropertyList &pl)
 Constructor.
 ~PCSDecoder ()
 Destructor.
void endOfSimulation ()
int getDataLength (int codedLength) const
int getCodeLength (int rawLength) const
void process ()
void Decode (const CVectorSeq &input_vectors, const MatrixFreqSignal &chanest, simth::ModSeq &output_symbols, simth::ModSeq *output_softout)

Static Public Member Functions

static CMatrix build_nice_shaped_R (const CMatrix &R)
static Vector absdiag (const CMatrix &mat, bool betrag)

Protected Member Functions

Complex give_me_a_hard_dec (const Complex &rivalue, unsigned n, unsigned i)
CVector R_iterate (CMatrix R, CVector e, unsigned n)
bool what_modulation (const std::string &mod_type)
Vector vecsort (Vector vec)
CMatrix make_R_diag_pos (CMatrix R)
bool is_R_singular (const CMatrix &R)

Protected Attributes

unsigned nr_param
bool diff_extr
bool int_hard_dec
unsigned bits_per_symbol
unsigned num_carrier
std::string mod_type
bool easy_alg
bool quality
double sum_qlty
double sum_qlty_max
double sum_diff_mat_qlty
unsigned qlty_counter
simthlib::ExtendedModListlocalExtModList

Related Functions

(Note that these are not member functions.)

 propertylist_PCSDecoder (not_a_function)

Constructor & Destructor Documentation

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

Constructor.

mimo::PCSDecoder::~PCSDecoder  ) 
 

Destructor.


Member Function Documentation

Complex mimo::PCSDecoder::give_me_a_hard_dec const Complex rivalue,
unsigned  n,
unsigned  i
[protected]
 

CVector mimo::PCSDecoder::R_iterate CMatrix  R,
CVector  e,
unsigned  n
[protected]
 

bool mimo::PCSDecoder::what_modulation const std::string &  mod_type  )  [protected]
 

Vector mimo::PCSDecoder::vecsort Vector  vec  )  [protected]
 

CMatrix mimo::PCSDecoder::make_R_diag_pos CMatrix  R  )  [protected]
 

bool mimo::PCSDecoder::is_R_singular const CMatrix R  )  [protected]
 

static CMatrix mimo::PCSDecoder::build_nice_shaped_R const CMatrix R  )  [static]
 

static Vector mimo::PCSDecoder::absdiag const CMatrix mat,
bool  betrag
[static]
 

void mimo::PCSDecoder::endOfSimulation  )  [virtual]
 

Reimplemented from simth::Device.

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

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

Implements mimo::Decoder.

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

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

Implements mimo::Decoder.

void mimo::PCSDecoder::process  )  [virtual]
 

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

Reimplemented from mimo::Decoder.

void mimo::PCSDecoder::Decode const CVectorSeq input_vectors,
const MatrixFreqSignal chanest,
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.


Friends And Related Function Documentation

propertylist_PCSDecoder not_a_function   )  [related]
 

These are the properties of class PCSDecoder . 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:

Partial Channel State Information Mimo Decoder The Decoder/Encoder pair is a close relative to the SVD- and a BLAST (Spatial mux with zero forcing) encoder. The special feature is, that you can vary the performance in-between those borders by choosing the proper number of parameters. These parameters are extracted from the optimal transmission matrix produced by the SVD-scheme. In the encoder these parameters are used to build up a transmission matrix which approximates the optimal one depending on the number of parameters that have been given to the encoder by the decoder. In Simthetic a backward channel necessary for such a system is not possible so you have to give the encoder its own source of channel knowledge by connecting the channel estimator.

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_param
<unsigned>, default "" -- Determines the number of desired Parameters that will be used for building the transmission matrix. If zero is chosen, the transmission matrix is the identity matrix and you will have a BLAST-like scheme. If the maximum number of parameters is chosen, which is calculated by (#tranmit antennas - 1)#tranmit antennas / 2, you will have a SVD-scheme. Values that exceed this range will be set to minimum or maximum respectively.

diff_extr
<bool>, default "" -- Activates differential matrix update. The actual matrix and its antecessor on the same subcarrier are being compared and only die difference is parameterized. The result is used for building up the transmission matrix by updating its antecessor.

int_hard_dec
<bool>, default "" -- Use internal hard decision for the iteration that computes the output vectors. If you choose "false" the computation is a linear solving, if not you will get a non-linear iteration. This hard decision will not be applied to the resulting values of the output vectors. If the bit loading information interface is connected, this option is switched off and adaptive internal hard decision will automatically be activated. DON'T ACTIVATE THIS OPTION IF ADAPTIVE MODULATION IS USED OR YOUR RESULTS WILL BE SPOILED COMPLETELY.

bits_per_symbol
<unsigned>, default "" -- Number of bits that are coded by one transmission symbol.

num_carrier
<unsigned>, default "" -- Number of OFDM subcarriers.

quality
<bool>, default "" -- Output to prompt the relative distance of the diagonal elements and Frobenius norm of the differences of the gain matrix used here to the optimal gain matrix of SVD. The output will appear when the simulation has ended.

mod_type
<enum>, default "PSK" -- Modulation type must equal the modulation block used within the simulation.

easy_alg
<bool>, default "" -- Activates an alternative type of parameter extraction algorithm slightly different from the original one.

8 properties in this class.


Member Data Documentation

unsigned mimo::PCSDecoder::nr_param [protected]
 

bool mimo::PCSDecoder::diff_extr [protected]
 

bool mimo::PCSDecoder::int_hard_dec [protected]
 

unsigned mimo::PCSDecoder::bits_per_symbol [protected]
 

unsigned mimo::PCSDecoder::num_carrier [protected]
 

std::string mimo::PCSDecoder::mod_type [protected]
 

bool mimo::PCSDecoder::easy_alg [protected]
 

bool mimo::PCSDecoder::quality [protected]
 

double mimo::PCSDecoder::sum_qlty [protected]
 

double mimo::PCSDecoder::sum_qlty_max [protected]
 

double mimo::PCSDecoder::sum_diff_mat_qlty [protected]
 

unsigned mimo::PCSDecoder::qlty_counter [protected]
 

simthlib::ExtendedModList* mimo::PCSDecoder::localExtModList [protected]
 


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