pub struct Sphere {
pub constellation: Constellation,
}Expand description
Exact ML detection by the Schnorr–Euchner sphere decoder.
After $H = Q R$, the tree of the streams is searched depth first from the last one, visiting the points of each level by increasing partial distance and pruning every branch whose partial distance exceeds the best complete one found so far.
Fields§
§constellation: ConstellationThe alphabet of every stream.
Implementations§
Trait Implementations§
Source§impl MimoDetector for Sphere
impl MimoDetector for Sphere
Source§fn constellation(&self) -> &Constellation
fn constellation(&self) -> &Constellation
The alphabet of every stream (the labels of
MimoDetector::detect index its
points).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 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 moreSource§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 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 moreimpl StructuralPartialEq for Sphere
Auto Trait Implementations§
impl Freeze for Sphere
impl RefUnwindSafe for Sphere
impl Send for Sphere
impl Sync for Sphere
impl Unpin for Sphere
impl UnsafeUnpin for Sphere
impl UnwindSafe for Sphere
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