![]() |
SOPT
Sparse OPTimisation
|
L1 proximal, including linear transform. More...
#include <l1_proximal.h>
Public Types | |
using | Scalar = SCALAR |
Underlying scalar type. More... | |
using | Real = typename real_type< Scalar >::type |
Underlying real scalar type. More... | |
Public Member Functions | |
L1TightFrame () | |
SOPT_MACRO (Psi, LinearTransform< Vector< Scalar >>) | |
Linear transform applied to input prior to L1 norm. More... | |
SOPT_MACRO (nu, Real) | |
Bound on the squared norm of the operator Ψ More... | |
Vector< Real > const & | weights () const |
Weights of the l1 norm. More... | |
template<typename T > | |
L1TightFrame< Scalar > & | weights (Eigen::MatrixBase< T > const &w) |
Weights of the l1 norm. More... | |
L1TightFrame< Scalar > & | weights (Real const &value) |
Set weights to a single value. More... | |
L1TightFrame &::type | Psi (ARGS &&... args) |
template<typename T0 , typename T1 > | |
std::enable_if< is_complex< Scalar >::value==is_complex< typename T0::Scalar >::value and is_complex< Scalar >::value==is_complex< typename T1::Scalar >::value >::type | operator() (Eigen::MatrixBase< T0 > &out, Real gamma, Eigen::MatrixBase< T1 > const &x) const |
Computes proximal for given γ More... | |
template<typename T0 > | |
ProximalExpression< L1TightFrame< Scalar > const &, T0 > | operator() (Real const &gamma, Eigen::MatrixBase< T0 > const &x) const |
Lazy version. More... | |
template<typename T0 , typename T1 > | |
std::enable_if< is_complex< Scalar >::value==is_complex< typename T0::Scalar >::value and is_complex< Scalar >::value==is_complex< typename T1::Scalar >::value, Real >::type | objective (Eigen::MatrixBase< T0 > const &x, Eigen::MatrixBase< T1 > const &z, Real const &gamma) const |
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 26 of file l1_proximal.h.
using sopt::proximal::L1TightFrame< SCALAR >::Real = typename real_type<Scalar>::type |
Underlying real scalar type.
Definition at line 31 of file l1_proximal.h.
using sopt::proximal::L1TightFrame< SCALAR >::Scalar = SCALAR |
Underlying scalar type.
Definition at line 29 of file l1_proximal.h.
|
inline |
Definition at line 47 of file l1_proximal.h.
std::enable_if< is_complex< SCALAR >::value==is_complex< typename T0::Scalar >::value and is_complex< SCALAR >::value==is_complex< typename T1::Scalar >::value, typename real_type< SCALAR >::type >::type sopt::proximal::L1TightFrame< SCALAR >::objective | ( | Eigen::MatrixBase< T0 > const & | x, |
Eigen::MatrixBase< T1 > const & | z, | ||
Real const & | gamma | ||
) | const |
\[ 0.5||x - z||_2^2 + γ||Ψ^† z||_w1 \]
Definition at line 149 of file l1_proximal.h.
References sopt::l1_norm().
Referenced by sopt::proximal::L1< SCALAR >::Breaker::Breaker(), and sopt::proximal::L1< SCALAR >::Breaker::operator()().
std::enable_if< is_complex< SCALAR >::value==is_complex< typename T0::Scalar >::value and is_complex< SCALAR >::value==is_complex< typename T1::Scalar >::value >::type sopt::proximal::L1TightFrame< SCALAR >::operator() | ( | Eigen::MatrixBase< T0 > & | out, |
Real | gamma, | ||
Eigen::MatrixBase< T1 > const & | x | ||
) | const |
Computes proximal for given γ
Definition at line 128 of file l1_proximal.h.
References sopt::soft_threshhold(), and SOPT_LOW_LOG.
Referenced by sopt::proximal::L1< SCALAR >::tight_frame().
|
inline |
Lazy version.
Definition at line 106 of file l1_proximal.h.
|
inline |
Definition at line 93 of file l1_proximal.h.
References sopt::linear_transform().
Referenced by sopt::proximal::L1< SCALAR >::Psi().
sopt::proximal::L1TightFrame< SCALAR >::SOPT_MACRO | ( | nu | , |
Real | |||
) |
Bound on the squared norm of the operator Ψ
sopt::proximal::L1TightFrame< SCALAR >::SOPT_MACRO | ( | Psi | , |
LinearTransform< Vector< Scalar >> | |||
) |
Linear transform applied to input prior to L1 norm.
|
inline |
Weights of the l1 norm.
Definition at line 74 of file l1_proximal.h.
Referenced by sopt::proximal::L1< SCALAR >::weights().
|
inline |
|
inline |