pub struct Eigenmode {
pub precoder: CMat,
pub combiner: CMat,
pub gains: Vec<f64>,
pub powers: Vec<f64>,
}Expand description
Eigenmode (SVD) transmission: precoder $V P^{1/2}$ and receive filter $U^{H}$.
Fields§
§precoder: CMatPrecoder, $n_{t} \times$ active streams.
combiner: CMatReceive filter, active streams $\times n_{r}$.
gains: Vec<f64>Singular values of the active modes.
powers: Vec<f64>Power of every active mode.
Implementations§
Source§impl Eigenmode
impl Eigenmode
Sourcepub fn new(
h: &ArrayView2<'_, C64>,
total_power: f64,
noise_var: f64,
water_filling: bool,
) -> Result<Eigenmode>
pub fn new( h: &ArrayView2<'_, C64>, total_power: f64, noise_var: f64, water_filling: bool, ) -> Result<Eigenmode>
The modes of h with water-filling of total_power against the receiver noise
variance noise_var (equal power on every non-zero mode if water_filling is
false); modes without power are dropped.
§Errors
As water_filling_powers, and Error::Config for a non-positive noise variance or a
zero channel.
Trait Implementations§
impl StructuralPartialEq for Eigenmode
Auto Trait Implementations§
impl Forget for Eigenmode
impl Freeze for Eigenmode
impl RefUnwindSafe for Eigenmode
impl Send for Eigenmode
impl Sync for Eigenmode
impl Unpin for Eigenmode
impl UnsafeUnpin for Eigenmode
impl UnwindSafe for Eigenmode
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