Precoding and Combining¶
Precoding¶
- class Precoder[source]
The Precoder Abstract Base Class (ABC).
A precoder class is responsible for implementing a precoding strategy and effectively precoding the transmitted signals in the base station.In case of coordinated beamforming, the precoder is responsible for computing the combining matrices for each UT as well! These are then later sent to the UTs.
In addition, the precoder is responsible for computing the equalization coefficients for each data stream. These will be used by the UTs to correctly rescale the received symbols before the decoding process.
- class NeutralPrecoder[source]
Bases:
PrecoderNeutral Precoder.
This precoder acts as a ‘neutral element’ for precoding.It does not perform any precoding and simply passes the data symbols through without any modification.
In addition, the power allocation is uniform across the data streams (so no real power allocation is performed either).
Finally, in case of coordinated beamforming, the combining matrices for each UT are set to the identity matrix (so no real combining is performed either).
- class SVDPrecoder[source]
Bases:
PrecoderSingular Value Decomposition (SVD) Precoder.
The optimal precoding strategy for a single-user MIMO system.This precoding strategy is only available for single-user systems, since it requires combining all data streams.
- class ZFPrecoder[source]
Bases:
PrecoderZero-Forcing (ZF) Precoder.
The precoder aims to completely eliminate all interference at the user terminals.The precoding matrix is therefore computed as the pseudo-inverse of the effective channel matrix H_eff.
In addition, the power allocation across the data streams is optimal in the sense that it maximizes the sum rate of the system under the total power constraint Pt.
- class BDPrecoder[source]
Bases:
PrecoderBlock Diagonalization (BD) Precoder.
Firstly, the multi-user precoder aims to completely eliminate all inter-user interference at the user terminals. This is achieved by choosing the multi-user precoding matrix of each UT such that it spans the null space of the interfering channel matrix of that UT.
Secondly, the single-user precoder for each UT is computed as the SVD precoder of the effective channel matrix of that UT after applying the multi-user precoding matrix. Analogue to SVD precoding in a SU-MIMO system. Same for the single-user combiner.
Combining¶
- class Combiner[source]
The Combiner Abstract Base Class (ABC).
This class is responsible for implementing a combining strategy and effectively combining the received signals in each user terminal.
- class NeutralCombiner[source]
Bases:
CombinerNeutral Combiner.
This combiner acts as a ‘neutral element’ for combining.It does not perform any combining and simply passes the received signal through without any modification.
- class LSVCombiner[source]
Bases:
CombinerLeft Singular Vector (LSV) Combiner.
The rows of the combining matrix are computed as the conjugate-transposed left singular vectors of the channel matrix H_k. The order of the singular vectors is determined by the descending order of the corresponding singular values. In that way, the strongest singular modes of the channel are used when effectively applying the combining matrix to the Ns_k data streams.