SOPT
Sparse OPTimisation
Functions
sopt::objective_functions Namespace Reference

Functions

template<typename T >
std::function< t_real(T)> const unconstrained_regularisation (const std::function< t_real(T)> &g, const t_real &sig, const T &y, const sopt::OperatorFunction< T > &measurement_operator)
 returns g(x) + ||y - Φ x||_2^2 as a function More...
 
template<typename T >
std::function< t_real(T)> const unconstrained_L1_regularisation (const t_real &gamma, const t_real &sig, const T &y, const sopt::OperatorFunction< T > &measurement_operator, const sopt::LinearTransform< T > &wavelet_operator)
 returns ||ψ^t x||_1 + ||y - Φ x||_2^2 as a function More...
 
template<typename T >
std::function< t_real(T)> const unconstrained_regularisation (const std::function< t_real(T)> &g, const t_real &sig, const T &y, const sopt::LinearTransform< T > &measurement_operator)
 
template<typename T >
std::function< t_real(T)> const unconstrained_l1_regularisation (const t_real &gamma, const t_real &sig, const T &y, const sopt::LinearTransform< T > &measurement_operator, const sopt::LinearTransform< T > &wavelet_operator)
 
template<typename T >
std::function< t_real(T)> const unconstrained_l1_regularisation (const t_real &gamma, const t_real &sig, const T &y, const sopt::OperatorFunction< T > &measurement_operator, const sopt::LinearTransform< T > &wavelet_operator)
 

Function Documentation

◆ unconstrained_l1_regularisation() [1/2]

template<typename T >
std::function< t_real(T)> const sopt::objective_functions::unconstrained_l1_regularisation ( const t_real gamma,
const t_real sig,
const T &  y,
const sopt::LinearTransform< T > &  measurement_operator,
const sopt::LinearTransform< T > &  wavelet_operator 
)

Definition at line 43 of file objective_functions.h.

46  {
47  if (gamma <= 0) SOPT_THROW("regularsiation paramter is not greater than 0.");
48  const std::function<t_real(T)> g = [=](const T &x) -> t_real {
49  return sopt::l1_norm(wavelet_operator.adjoint() * x) * gamma;
50  };
51  return unconstrained_regularisation<T>(g, sig, y, measurement_operator);
52 }
LinearTransform< VECTOR > adjoint() const
Indirect transform.
#define SOPT_THROW(MSG)
Definition: exception.h:46
sopt::t_real t_real
real_type< typename T0::Scalar >::type l1_norm(Eigen::ArrayBase< T0 > const &input, Eigen::ArrayBase< T1 > const &weights)
Computes weighted L1 norm.
Definition: maths.h:116

References sopt::LinearTransform< VECTOR >::adjoint(), sopt::l1_norm(), and SOPT_THROW.

◆ unconstrained_L1_regularisation()

template<typename T >
std::function<t_real(T)> const sopt::objective_functions::unconstrained_L1_regularisation ( const t_real gamma,
const t_real sig,
const T &  y,
const sopt::OperatorFunction< T > &  measurement_operator,
const sopt::LinearTransform< T > &  wavelet_operator 
)

returns ||ψ^t x||_1 + ||y - Φ x||_2^2 as a function

◆ unconstrained_l1_regularisation() [2/2]

template<typename T >
std::function<t_real(T)> const sopt::objective_functions::unconstrained_l1_regularisation ( const t_real gamma,
const t_real sig,
const T &  y,
const sopt::OperatorFunction< T > &  measurement_operator,
const sopt::LinearTransform< T > &  wavelet_operator 
)

Definition at line 61 of file objective_functions.h.

64  {
65  const LinearTransform<T> mop = {measurement_operator, measurement_operator};
66  return unconstrained_l1_regularisation<T>(gamma, sig, mop * y, mop, wavelet_operator);
67 }
Joins together direct and indirect operators.

◆ unconstrained_regularisation() [1/2]

template<typename T >
std::function< t_real(T)> const sopt::objective_functions::unconstrained_regularisation ( const std::function< t_real(T)> &  g,
const t_real sig,
const T &  y,
const sopt::LinearTransform< T > &  measurement_operator 
)

Definition at line 35 of file objective_functions.h.

37  {
38  return [=](const T &x) -> t_real {
39  return g(x) + 0.5 * std::pow(sopt::l2_norm(y - measurement_operator * x) / sig, 2);
40  };
41 }
real_type< typename T0::Scalar >::type l2_norm(Eigen::ArrayBase< T0 > const &input, Eigen::ArrayBase< T1 > const &weights)
Computes weighted L2 norm.
Definition: maths.h:140

References sopt::l2_norm().

◆ unconstrained_regularisation() [2/2]

template<typename T >
std::function< t_real(T)> const sopt::objective_functions::unconstrained_regularisation ( const std::function< t_real(T)> &  g,
const t_real sig,
const T &  y,
const sopt::OperatorFunction< T > &  measurement_operator 
)

returns g(x) + ||y - Φ x||_2^2 as a function

Definition at line 54 of file objective_functions.h.

56  {
57  const LinearTransform<T> mop = {measurement_operator, measurement_operator};
58  return unconstrained_regularisation<T>(g, sig, mop * y, mop);
59 }