diff options
Diffstat (limited to 'src/Persistence_representations/test/kernels.cpp')
-rw-r--r-- | src/Persistence_representations/test/kernels.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/Persistence_representations/test/kernels.cpp b/src/Persistence_representations/test/kernels.cpp index c95e8086..b8d02d4c 100644 --- a/src/Persistence_representations/test/kernels.cpp +++ b/src/Persistence_representations/test/kernels.cpp @@ -40,10 +40,16 @@ using SW = Gudhi::Persistence_representations::Sliced_Wasserstein; using PWG = Gudhi::Persistence_representations::Persistence_heat_maps<constant_scaling_function>; using Persistence_diagram = std::vector<std::pair<double,double> >; +std::function<double(std::pair<double, double>, std::pair<double, double>)> Gaussian_function(double sigma){ + return [=](std::pair<double, double> p, std::pair<double, double> q){ + return (1/std::sqrt(2*Gudhi::Persistence_representations::pi)*sigma) * std::exp( -( (p.first-q.first)*(p.first-q.first) + (p.second-q.second)*(p.second-q.second) )/(2*sigma) ); + }; +} + BOOST_AUTO_TEST_CASE(check_PWG) { Persistence_diagram v1, v2; v1.emplace_back(0,1); v2.emplace_back(0,2); - PWG pwg1(v1, Gudhi::Persistence_representations::Gaussian_kernel(1.0)); - PWG pwg2(v2, Gudhi::Persistence_representations::Gaussian_kernel(1.0)); + PWG pwg1(v1, Gaussian_function(1.0)); + PWG pwg2(v2, Gaussian_function(1.0)); BOOST_CHECK(std::abs(pwg1.compute_scalar_product(pwg2) - std::exp(-0.5)/(std::sqrt(2*Gudhi::Persistence_representations::pi))) <= 1e-3); } |