pub struct GraphSampling {
pub bandwidth: usize,
}Expand description
Optimal graph signal sampling set selection.
Selects a set of k nodes from which a k-bandlimited graph signal can
be uniquely reconstructed. The greedy algorithm maximises the cut-off
frequency achievable from the selected nodes by greedily picking nodes that
maximise the determinant (volume) of the submatrix formed by the k
smoothest eigenvectors restricted to the sampling set.
The greedy maximisation of the log-determinant is equivalent to maximising the minimum singular value of the restricted eigenvector matrix, which directly determines the stability of the reconstruction.
Fields§
§bandwidth: usizeNumber of frequency components (bandwidth) of the signal.
Implementations§
Source§impl GraphSampling
impl GraphSampling
Sourcepub fn new(bandwidth: usize) -> Self
pub fn new(bandwidth: usize) -> Self
Create a GraphSampling instance for signals with bandwidth components.
Sourcepub fn greedy_sampling_set(
&self,
gft: &GraphFourierTransform,
) -> Result<Vec<usize>>
pub fn greedy_sampling_set( &self, gft: &GraphFourierTransform, ) -> Result<Vec<usize>>
Greedy sampling set selection.
Returns a list of bandwidth node indices that form a valid sampling set
(i.e. the restriction of the first bandwidth eigenvectors to these rows
has full column rank).
The algorithm iteratively adds the node that maximises the volume
(log-det of Aᵀ A where A is the current restricted eigenvector
submatrix). This is a classic D-optimal experimental design step.
Sourcepub fn is_valid_sampling_set(
&self,
gft: &GraphFourierTransform,
set: &[usize],
tol: f64,
) -> Result<bool>
pub fn is_valid_sampling_set( &self, gft: &GraphFourierTransform, set: &[usize], tol: f64, ) -> Result<bool>
Check whether a given node set is a valid bandwidth-sampling set,
i.e. the restricted eigenvector matrix has full column rank.
Validity is checked by verifying that the minimum singular value of
the restricted matrix exceeds tol.
Trait Implementations§
Source§impl Clone for GraphSampling
impl Clone for GraphSampling
Source§fn clone(&self) -> GraphSampling
fn clone(&self) -> GraphSampling
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for GraphSampling
impl RefUnwindSafe for GraphSampling
impl Send for GraphSampling
impl Sync for GraphSampling
impl Unpin for GraphSampling
impl UnsafeUnpin for GraphSampling
impl UnwindSafe for GraphSampling
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more