1 #ifndef NPSTAT_ABSUNFOLDINGFILTERND_HH_
2 #define NPSTAT_ABSUNFOLDINGFILTERND_HH_
18 #include "geners/ClassId.hh"
19 #include "geners/CPP11_auto_ptr.hh"
43 {
return (
typeid(*
this) ==
typeid(r)) && this->isEqual(r);}
46 {
return !(*
this == r);}
51 virtual bool write(std::ostream&)
const = 0;
54 static inline const char* classname()
55 {
return "npstat::AbsUnfoldingFilterND";}
56 static inline unsigned version() {
return 1;}
57 static AbsUnfoldingFilterND* read(
const gs::ClassId&
id, std::istream&);
60 virtual bool isEqual(
const AbsUnfoldingFilterND&)
const = 0;
69 : impl_(filt), owns_(assumeOwnership) {assert(impl_);}
73 inline unsigned dim()
const {
return impl_->dim();}
76 {
return impl_->dataShape();}
79 const unsigned* index,
const unsigned lenIndex)
const
80 {
return impl_->selfContribution(index, lenIndex);}
83 {
return impl_->linearSelfContribution(index);}
87 {impl_->filter(in, out);}
89 inline void convolve(
const ArrayND<double>& in,
90 ArrayND<double>* out)
const
91 {impl_->convolve(in, out);}
93 inline Matrix<double> getFilterMatrix()
const
94 {
return impl_->getFilterMatrix();}
98 inline virtual gs::ClassId
classId()
const {
return gs::ClassId(*
this);}
99 inline virtual bool write(std::ostream& of)
const
100 {
return impl_->classId().write(of) && impl_->write(of);}
103 static inline const char* classname()
105 static const std::string name(
106 gs::template_class_name<Impl>(
"npstat::UnfoldingFilterND"));
110 static inline unsigned version() {
return 1;}
112 static inline UnfoldingFilterND* read(
const gs::ClassId&
id,
115 static const gs::ClassId current(
116 gs::ClassId::makeId<UnfoldingFilterND>());
117 current.ensureSameId(
id);
118 gs::ClassId id1(in, 1);
119 CPP11_auto_ptr<Impl> ptr(Impl::read(id1, in));
120 UnfoldingFilterND* p =
new UnfoldingFilterND(ptr.get(),
true);
126 inline virtual bool isEqual(
const AbsUnfoldingFilterND& r)
const
127 {
return *impl_ == *(
static_cast<const UnfoldingFilterND&
>(r)).impl_;}
131 UnfoldingFilterND(
const UnfoldingFilterND&);
132 UnfoldingFilterND& operator=(
const UnfoldingFilterND&);
Interface definition for multivariate smoothers that can be cross-validated.
Arbitrary-dimensional array template.
Definition: AbsUnfoldingFilterND.hh:28
virtual gs::ClassId classId() const =0
Definition: AbsUnfoldingFilterND.hh:66
double selfContribution(const unsigned *index, const unsigned lenIndex) const
Definition: AbsUnfoldingFilterND.hh:78
std::vector< unsigned > dataShape() const
Definition: AbsUnfoldingFilterND.hh:75
unsigned dim() const
Definition: AbsUnfoldingFilterND.hh:73
virtual gs::ClassId classId() const
Definition: AbsUnfoldingFilterND.hh:98
double linearSelfContribution(const unsigned long index) const
Definition: AbsUnfoldingFilterND.hh:82
Definition: AbsArrayProjector.hh:14
Definition: AbsPolyFilterND.hh:27