pub struct LinearPrecoder {
pub w: CMat,
}Expand description
A linear precoder $x = W s$ (one column of the streams at a time).
Fields§
§w: CMatThe precoding matrix, $n_{t} \times$ streams.
Implementations§
Source§impl LinearPrecoder
impl LinearPrecoder
Sourcepub fn zero_forcing(
h: &ArrayView2<'_, C64>,
total_power: f64,
) -> Result<LinearPrecoder>
pub fn zero_forcing( h: &ArrayView2<'_, C64>, total_power: f64, ) -> Result<LinearPrecoder>
Zero forcing for the users of the rows of h, scaled to total_power.
§Errors
Error::Config if there are more users than transmit antennas,
Error::Numerical for a rank-deficient channel.
Sourcepub fn regularized(
h: &ArrayView2<'_, C64>,
alpha: f64,
total_power: f64,
) -> Result<LinearPrecoder>
pub fn regularized( h: &ArrayView2<'_, C64>, alpha: f64, total_power: f64, ) -> Result<LinearPrecoder>
Regularised zero forcing $H^{H}(H H^{H} + \alpha I)^{-1}$, scaled to
total_power (use $\alpha = K \sigma^{2} / P$).
§Errors
Error::Config for a negative alpha or a non-positive power,
Error::Numerical for a singular system.
Trait Implementations§
Source§impl Clone for LinearPrecoder
impl Clone for LinearPrecoder
Source§impl Debug for LinearPrecoder
impl Debug for LinearPrecoder
Source§impl PartialEq for LinearPrecoder
impl PartialEq for LinearPrecoder
Source§impl Precode for LinearPrecoder
impl Precode for LinearPrecoder
impl StructuralPartialEq for LinearPrecoder
Auto Trait Implementations§
impl Freeze for LinearPrecoder
impl RefUnwindSafe for LinearPrecoder
impl Send for LinearPrecoder
impl Sync for LinearPrecoder
impl Unpin for LinearPrecoder
impl UnsafeUnpin for LinearPrecoder
impl UnwindSafe for LinearPrecoder
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