pub struct Interleaver { /* private fields */ }Expand description
A permutation of the positions of a block.
Implementations§
Source§impl Interleaver
impl Interleaver
Sourcepub fn from_permutation(perm: Vec<usize>) -> Result<Interleaver>
pub fn from_permutation(perm: Vec<usize>) -> Result<Interleaver>
The interleaver of the permutation perm: output position $i$ takes input
position perm[i].
§Errors
comnum_core::Error::Config if perm is not a permutation of $0, \dots, n - 1$.
§Examples
use comnum_fec::interleaving::Interleaver;
let p = Interleaver::from_permutation(vec![2, 0, 1])?;
assert_eq!(p.interleave(&['a', 'b', 'c']), ['c', 'a', 'b']);
assert!(Interleaver::from_permutation(vec![0, 0, 1]).is_err());Sourcepub fn block(rows: usize, cols: usize) -> Interleaver
pub fn block(rows: usize, cols: usize) -> Interleaver
Write row by row into rows × cols, read column by column.
Sourcepub fn random(n: usize, seed: u64) -> Interleaver
pub fn random(n: usize, seed: u64) -> Interleaver
A uniform random permutation of n positions (seeded).
Sourcepub fn qpp(k: usize, f1: usize, f2: usize) -> Result<Interleaver>
pub fn qpp(k: usize, f1: usize, f2: usize) -> Result<Interleaver>
The quadratic permutation polynomial $\pi(i) = (f_{1} i + f_{2} i^{2}) \bmod K$.
§Errors
comnum_core::Error::Config if the polynomial is not a permutation.
Sourcepub fn from_name(name: &str, k: usize) -> Result<Interleaver>
pub fn from_name(name: &str, k: usize) -> Result<Interleaver>
The interleaver of a standard by name, for blocks of k bits: lte, the QPP
interleaver of the LTE turbo code (crate::turbo::lte_qpp, TS 36.212,
Table 5.1.3-3), case-insensitive.
§Errors
comnum_core::Error::Config for another name, or a size k outside the table.
Sourcepub fn interleave<T: Copy>(&self, x: &[T]) -> Vec<T>
pub fn interleave<T: Copy>(&self, x: &[T]) -> Vec<T>
Trait Implementations§
Source§impl Clone for Interleaver
impl Clone for Interleaver
Source§impl Debug for Interleaver
impl Debug for Interleaver
impl Eq for Interleaver
Source§impl PartialEq for Interleaver
impl PartialEq for Interleaver
impl StructuralPartialEq for Interleaver
Auto Trait Implementations§
impl Freeze for Interleaver
impl RefUnwindSafe for Interleaver
impl Send for Interleaver
impl Sync for Interleaver
impl Unpin for Interleaver
impl UnsafeUnpin for Interleaver
impl UnwindSafe for Interleaver
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