pub struct KBest { /* private fields */ }Expand description
The K-best tree search: breadth first from the last stream, keeping the k paths
of smallest partial distance at every level.
Implementations§
Source§impl KBest
impl KBest
Sourcepub fn new(constellation: Constellation, k: usize) -> Result<KBest>
pub fn new(constellation: Constellation, k: usize) -> Result<KBest>
The search keeping k paths, the LLRs of the bits whose counter-hypothesis left
the list clipped at KNOWN_BIT_LLR.
§Errors
Error::Config for $k = 0$.
Sourcepub fn with_llr_clip(self, llr_clip: f64) -> Result<KBest>
pub fn with_llr_clip(self, llr_clip: f64) -> Result<KBest>
The same search with the LLR magnitude llr_clip for a bit whose
counter-hypothesis left the list.
§Errors
Error::Config for a magnitude that is not positive.
Trait Implementations§
Source§impl MimoDetector for KBest
impl MimoDetector for KBest
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 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 KBest
Auto Trait Implementations§
impl Forget for KBest
impl Freeze for KBest
impl RefUnwindSafe for KBest
impl Send for KBest
impl Sync for KBest
impl Unpin for KBest
impl UnsafeUnpin for KBest
impl UnwindSafe for KBest
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