pub struct CodedDiffraction {
pub n: usize,
pub n_masks: usize,
/* private fields */
}Expand description
A coded-diffraction forward operator: L random complex masks of length n.
Fields§
§n: usizeSignal length n.
n_masks: usizeNumber of coded patterns L.
Implementations§
Source§impl CodedDiffraction
impl CodedDiffraction
Sourcepub fn new(
n: usize,
n_masks: usize,
kind: MaskKind,
rng: &mut LcgRng,
) -> CsResult<Self>
pub fn new( n: usize, n_masks: usize, kind: MaskKind, rng: &mut LcgRng, ) -> CsResult<Self>
Construct n_masks random masks of length n.
§Errors
CsError::InvalidParameter for n == 0 or n_masks == 0.
Sourcepub fn n_measurements(&self) -> usize
pub fn n_measurements(&self) -> usize
Total number of real measurements m = L · n.
Sourcepub fn forward(&self, x: &[f64]) -> CsResult<Vec<f64>>
pub fn forward(&self, x: &[f64]) -> CsResult<Vec<f64>>
Phaseless forward measurement y = |A_l x|² stacked over all masks.
x is interleaved complex (length 2n). Output is real, length m = L·n,
laid out mask-major: y[l·n + k] = |(A_l x)_k|².
§Errors
CsError::DimensionMismatch if x.len() != 2n.
Sourcepub fn wirtinger_flow(
&self,
y: &[f64],
cfg: &WirtingerConfig,
rng: &mut LcgRng,
) -> CsResult<Vec<f64>>
pub fn wirtinger_flow( &self, y: &[f64], cfg: &WirtingerConfig, rng: &mut LcgRng, ) -> CsResult<Vec<f64>>
Recover x (up to a global phase) from phaseless measurements y by Wirtinger Flow.
y— measurements fromforward, lengthm = L·n.cfg— algorithm configuration.rng— RNG for the spectral-initialisation power iteration.
Returns the recovered interleaved-complex signal (length 2n).
§Errors
CsError::DimensionMismatchify.len() != m.CsError::NumericalInstabilityif the spectral initialiser degenerates.
Trait Implementations§
Source§impl Clone for CodedDiffraction
impl Clone for CodedDiffraction
Source§fn clone(&self) -> CodedDiffraction
fn clone(&self) -> CodedDiffraction
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for CodedDiffraction
impl RefUnwindSafe for CodedDiffraction
impl Send for CodedDiffraction
impl Sync for CodedDiffraction
impl Unpin for CodedDiffraction
impl UnsafeUnpin for CodedDiffraction
impl UnwindSafe for CodedDiffraction
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