Line data Source code
1 : #include "RepresentationProblem.h" 2 : #include "LinearResidual.h" 3 : #include "L2NormPow2.h" 4 : 5 : namespace elsa 6 : { 7 : 8 : template <typename data_t> 9 : RepresentationProblem<data_t>::RepresentationProblem(const Dictionary<data_t>& D, 10 : const DataContainer<data_t>& y) 11 : : Problem<data_t>{L2NormPow2<data_t>{LinearResidual<data_t>{D, y}}}, _dict(D), _signal(y) 12 12 : { 13 12 : } 14 : 15 : template <typename data_t> 16 : const Dictionary<data_t>& RepresentationProblem<data_t>::getDictionary() const 17 3 : { 18 3 : return _dict; 19 3 : } 20 : 21 : template <typename data_t> 22 : const DataContainer<data_t>& RepresentationProblem<data_t>::getSignal() const 23 4 : { 24 4 : return _signal; 25 4 : } 26 : 27 : template <typename data_t> 28 : void RepresentationProblem<data_t>::getGradientImpl(DataContainer<data_t>&) 29 0 : { 30 0 : throw LogicError( 31 0 : "RepresentationProblem::getGradient: Objective function is not differentiable"); 32 0 : } 33 : 34 : template <typename data_t> 35 : RepresentationProblem<data_t>* RepresentationProblem<data_t>::cloneImpl() const 36 2 : { 37 2 : return new RepresentationProblem(_dict, _signal); 38 2 : } 39 : 40 : // ------------------------------------------ 41 : // explicit template instantiation 42 : template class RepresentationProblem<float>; 43 : template class RepresentationProblem<double>; 44 : 45 : } // namespace elsa