pub struct Linear {
pub constellation: Constellation,
pub criterion: Criterion,
}Expand description
A linear detector (MR, ZF or MMSE) followed by symbol-by-symbol decisions.
Fields§
§constellation: ConstellationThe alphabet of every stream.
criterion: CriterionMR, ZF or MMSE.
Implementations§
Source§impl Linear
impl Linear
Sourcepub fn mr(constellation: Constellation) -> Linear
pub fn mr(constellation: Constellation) -> Linear
The maximum-ratio detector (matched filter).
Sourcepub fn zf(constellation: Constellation) -> Linear
pub fn zf(constellation: Constellation) -> Linear
The zero-forcing detector.
Sourcepub fn mmse(constellation: Constellation) -> Linear
pub fn mmse(constellation: Constellation) -> Linear
The (unbiased) MMSE detector.
Sourcepub fn estimate(
&self,
h: &ArrayView2<'_, C64>,
y: &[C64],
noise_var: f64,
) -> Result<Estimates>
pub fn estimate( &self, h: &ArrayView2<'_, C64>, y: &[C64], noise_var: f64, ) -> Result<Estimates>
The unbiased estimates of the transmitted symbols and their noise variances.
§Errors
As MimoDetector::detect; Error::Numerical for a rank-deficient channel.
Trait Implementations§
Source§impl MimoDetector for Linear
impl MimoDetector for Linear
Source§fn constellation(&self) -> &Constellation
fn constellation(&self) -> &Constellation
The alphabet of every stream (the labels of
MimoDetector::detect index its
points).Source§fn has_soft_output(&self) -> bool
fn has_soft_output(&self) -> bool
Whether
MimoDetector::llr gives bit LLRs (false: it returns an error).Source§fn soft_estimate(
&self,
h: &ArrayView2<'_, C64>,
y: &[C64],
noise_var: f64,
) -> Result<Option<Estimates>>
fn soft_estimate( &self, h: &ArrayView2<'_, C64>, y: &[C64], noise_var: f64, ) -> Result<Option<Estimates>>
The estimates of the transmitted symbols and their noise variances, when the
detector forms them (
None for the detectors that decide on the lattice). Read moreSource§fn detect(
&self,
h: &ArrayView2<'_, C64>,
y: &[C64],
noise_var: f64,
) -> Result<Vec<usize>>
fn detect( &self, h: &ArrayView2<'_, C64>, y: &[C64], noise_var: f64, ) -> Result<Vec<usize>>
The label of the decided point of every transmit stream. Read more
Source§fn llr(
&self,
h: &ArrayView2<'_, C64>,
y: &[C64],
noise_var: f64,
) -> Result<Vec<f64>>
fn llr( &self, h: &ArrayView2<'_, C64>, y: &[C64], noise_var: f64, ) -> Result<Vec<f64>>
Bit LLRs, $n_{t} \log_{2} M$ of them (positive for a 0). Read more
Source§fn detect_llr(
&self,
h: &ArrayView2<'_, C64>,
y: &[C64],
noise_var: f64,
) -> Result<(Vec<usize>, Vec<f64>)>
fn detect_llr( &self, h: &ArrayView2<'_, C64>, y: &[C64], noise_var: f64, ) -> Result<(Vec<usize>, Vec<f64>)>
The labels and the bit LLRs of one channel use, those of
MimoDetector::detect and MimoDetector::llr; the detectors with soft
output get both from one search. Read moreSource§fn detect_block(
&self,
h: &ArrayView2<'_, C64>,
y: &ArrayView2<'_, C64>,
noise_var: f64,
) -> Result<Array2<usize>>
fn detect_block( &self, h: &ArrayView2<'_, C64>, y: &ArrayView2<'_, C64>, noise_var: f64, ) -> Result<Array2<usize>>
Detect every column of
y (n_rx × T) with the same channel: the labels,
n_tx × T. The detectors of this module factor the channel once for the block. Read moreimpl StructuralPartialEq for Linear
Auto Trait Implementations§
impl Freeze for Linear
impl RefUnwindSafe for Linear
impl Send for Linear
impl Sync for Linear
impl Unpin for Linear
impl UnsafeUnpin for Linear
impl UnwindSafe for Linear
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more