1
0
mirror of https://github.com/aportelli/LatAnalyze.git synced 2025-05-14 05:15:45 +01:00

Laplace filter positive-definite and with squared regulator

This commit is contained in:
Antonin Portelli 2025-04-21 15:31:13 -03:00
parent 89b540d074
commit 4988f351f2
2 changed files with 5 additions and 6 deletions

View File

@ -66,18 +66,18 @@ void DataFilter::operator()(DMat &out, const DMat &in)
******************************************************************************/ ******************************************************************************/
// constructor //////////////////////////////////////////////////////////////// // constructor ////////////////////////////////////////////////////////////////
LaplaceDataFilter::LaplaceDataFilter(const bool downsample) LaplaceDataFilter::LaplaceDataFilter(const bool downsample)
: DataFilter({1., -2. , 1.}, downsample) : DataFilter({-1., 2. , -1.}, downsample)
{} {}
// filtering ////////////////////////////////////////////////////////////////// // filtering //////////////////////////////////////////////////////////////////
void LaplaceDataFilter::operator()(DVec &out, const DVec &in, const double lambda) void LaplaceDataFilter::operator()(DVec &out, const DVec &in, const double lambda)
{ {
filter_[1] = -2. - lambda; filter_[1] = 2. + Math::pow<2>(lambda);
DataFilter::operator()(out, in); DataFilter::operator()(out, in);
} }
void LaplaceDataFilter::operator()(DMat &out, const DMat &in, const double lambda) void LaplaceDataFilter::operator()(DMat &out, const DMat &in, const double lambda)
{ {
filter_[1] = -2. - lambda; filter_[1] = 2. + Math::pow<2>(lambda);
DataFilter::operator()(out, in); DataFilter::operator()(out, in);
} }

View File

@ -70,7 +70,7 @@ public:
template <typename MatType, Index o> template <typename MatType, Index o>
double optimiseFunction(const StatArray<MatType, o> &data, double optimiseFunction(const StatArray<MatType, o> &data,
ObjectiveFunction<MatType, o> &fn, ObjectiveFunction<MatType, o> &fn,
Minimizer &min, const unsigned int nPass = 3); Minimizer &min);
}; };
/****************************************************************************** /******************************************************************************
@ -104,8 +104,7 @@ void LaplaceDataFilter::operator()(StatArray<MatType, o> &out,
template <typename MatType, Index o> template <typename MatType, Index o>
double LaplaceDataFilter::optimiseFunction(const StatArray<MatType, o> &data, double LaplaceDataFilter::optimiseFunction(const StatArray<MatType, o> &data,
ObjectiveFunction<MatType, o> &fn, ObjectiveFunction<MatType, o> &fn,
Minimizer &min, Minimizer &min)
const unsigned int nPass)
{ {
StatArray<MatType, o> fdata(data.size()); StatArray<MatType, o> fdata(data.size());
DVec init(1); DVec init(1);