![]() |
SOPT
Sparse OPTimisation
|
L1 proximal, including linear transform. More...
#include <l1_proximal.h>
Classes | |
class | Breaker |
struct | Diagnostic |
How did calling L1 go? More... | |
struct | DiagnosticAndResult |
Result from calling L1. More... | |
class | FistaMixing |
class | NoMixing |
Public Types | |
using | Scalar = typename L1TightFrame< SCALAR >::Scalar |
Underlying scalar type. More... | |
using | Real = typename L1TightFrame< SCALAR >::Real |
Underlying real scalar type. More... | |
Public Member Functions | |
template<typename T0 > | |
Diagnostic | operator() (Eigen::MatrixBase< T0 > &out, Real gamma, Vector< Scalar > const &x) const |
Computes proximal for given γ More... | |
template<typename T0 > | |
DiagnosticAndResult | operator() (Real const &gamma, Eigen::MatrixBase< T0 > const &x) const |
Lazy version. More... | |
L1 () | |
SOPT_MACRO (itermax, t_uint) | |
Maximum number of iterations before bailing out. More... | |
SOPT_MACRO (tolerance, Real) | |
Tolerance criteria. More... | |
SOPT_MACRO (positivity_constraint, bool) | |
Whether to apply positivity constraints. More... | |
SOPT_MACRO (real_constraint, bool) | |
Whether the output should be constrained to be real. More... | |
SOPT_MACRO (fista_mixing, bool) | |
Whether to do fista mixing or not. More... | |
Vector< Real > const & | weights () const |
Weights of the l1 norm. More... | |
template<typename T > | |
L1< Scalar > & | weights (Eigen::MatrixBase< T > const &w) |
Set weights to an array of values. More... | |
L1< Scalar > & | weights (Real const &w) |
Set weights to a single value. More... | |
Real | nu () const |
Bounds on the squared norm of the operator Ψ More... | |
L1< Scalar > & | nu (Real const &nu) |
Sets the bound on the squared norm of the operator Ψ More... | |
LinearTransform< Vector< Scalar > > const & | Psi () const |
Linear transform applied to input prior to L1 norm. More... | |
L1< Scalar > &::type | Psi (ARGS &&... args) |
template<typename... T> | |
auto | tight_frame (T &&... args) const -> decltype(this->L1TightFrame< Scalar >::operator()(std::forward< T >(args)...)) |
Special case if Ψ ia a tight frame. More... | |
L1 proximal, including linear transform.
This function computes the prox operator of the l1 norm for the input vector \(x\). It solves the problem:
\[ min_{z} 0.5||x - z||_2^2 + γ ||Ψ^† z||_w1 \]
where \(Ψ \in C^{N_x \times N_r} \) is the sparsifying operator, and
\[|| ||_w1\]
is the weighted L1 norm.
Definition at line 169 of file l1_proximal.h.
using sopt::proximal::L1< SCALAR >::Real = typename L1TightFrame<SCALAR>::Real |
Underlying real scalar type.
Definition at line 187 of file l1_proximal.h.
using sopt::proximal::L1< SCALAR >::Scalar = typename L1TightFrame<SCALAR>::Scalar |
Underlying scalar type.
Definition at line 185 of file l1_proximal.h.
|
inline |
Definition at line 246 of file l1_proximal.h.
|
inline |
Bounds on the squared norm of the operator Ψ
Definition at line 294 of file l1_proximal.h.
Referenced by function_l1p(), main(), and sopt::proximal::L1< SCALAR >::nu().
|
inline |
Sets the bound on the squared norm of the operator Ψ
Definition at line 296 of file l1_proximal.h.
References sopt::proximal::L1< SCALAR >::nu().
|
inline |
Computes proximal for given γ
Definition at line 215 of file l1_proximal.h.
|
inline |
Lazy version.
Definition at line 230 of file l1_proximal.h.
References sopt::proximal::L1< SCALAR >::DiagnosticAndResult::proximal.
|
inline |
Linear transform applied to input prior to L1 norm.
Definition at line 302 of file l1_proximal.h.
References sopt::proximal::L1TightFrame< SCALAR >::Psi().
Referenced by sopt::algorithm::ImagingProximalADMM< SCALAR >::Psi(), and sopt::algorithm::L1GProximal< SCALAR >::Psi().
|
inline |
Definition at line 305 of file l1_proximal.h.
References sopt::proximal::L1TightFrame< SCALAR >::Psi().
sopt::proximal::L1< SCALAR >::SOPT_MACRO | ( | fista_mixing | , |
bool | |||
) |
Whether to do fista mixing or not.
sopt::proximal::L1< SCALAR >::SOPT_MACRO | ( | itermax | , |
t_uint | |||
) |
Maximum number of iterations before bailing out.
0 means algorithm breaks only if convergence is reached.
sopt::proximal::L1< SCALAR >::SOPT_MACRO | ( | positivity_constraint | , |
bool | |||
) |
Whether to apply positivity constraints.
sopt::proximal::L1< SCALAR >::SOPT_MACRO | ( | real_constraint | , |
bool | |||
) |
Whether the output should be constrained to be real.
sopt::proximal::L1< SCALAR >::SOPT_MACRO | ( | tolerance | , |
Real | |||
) |
Tolerance criteria.
|
inline |
Special case if Ψ ia a tight frame.
Definition at line 313 of file l1_proximal.h.
References sopt::proximal::L1TightFrame< SCALAR >::operator()().
|
inline |
Weights of the l1 norm.
Definition at line 280 of file l1_proximal.h.
References sopt::proximal::L1TightFrame< SCALAR >::weights().
|
inline |
Set weights to an array of values.
Definition at line 283 of file l1_proximal.h.
References sopt::proximal::L1TightFrame< SCALAR >::weights().
|
inline |
Set weights to a single value.
Definition at line 288 of file l1_proximal.h.
References sopt::proximal::L1TightFrame< SCALAR >::weights().