Janus 2.0.0
High-performance C++20 dual-mode numerical framework
Loading...
Searching...
No Matches
Interpolate.hpp File Reference

N-dimensional interpolation (linear, Hermite, B-spline, nearest). More...

#include "janus/core/JanusConcepts.hpp"
#include "janus/core/JanusError.hpp"
#include "janus/core/JanusTypes.hpp"
#include "janus/math/Linalg.hpp"
#include <algorithm>
#include <casadi/casadi.hpp>
#include <cmath>
#include <optional>
#include <vector>
Include dependency graph for Interpolate.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  janus::ExtrapolationConfig
 Configuration for extrapolation behavior. More...
struct  janus::detail::InterpnGridData
class  janus::Interpolator

Namespaces

namespace  janus
namespace  janus::detail
 Smooth approximation of ReLU function: softplus(x) = (1/beta) * log(1 + exp(beta * x)).

Enumerations

enum class  janus::InterpolationMethod { janus::Linear , janus::Hermite , janus::BSpline , janus::Nearest }
 Supported interpolation methods. More...
enum class  janus::ExtrapolationMode { janus::Clamp , janus::Linear }
 Controls behavior when query points fall outside grid bounds. More...

Functions

std::string janus::detail::method_to_casadi_string (InterpolationMethod method)
 Convert InterpolationMethod enum to CasADi string.
const char * janus::detail::hermite_symbolic_error_message ()
template<typename Derived>
JanusVector< typename Derived::Scalar > janus::detail::flatten_fortran_order (const Eigen::MatrixBase< Derived > &values)
 Flatten N-D values array in Fortran order for CasADi.
std::string janus::detail::symbolic_values_method_error_message (InterpolationMethod method)
InterpnGridData janus::detail::build_interpn_grid (const std::vector< NumericVector > &points, const char *context)
void janus::detail::validate_bspline_grid (const std::vector< std::vector< double > > &grid, const char *context)
template<JanusScalar Scalar>
JanusMatrix< Scalar > janus::detail::normalize_query_matrix (const JanusMatrix< Scalar > &xi, int n_dims, const char *context)
template<JanusScalar Scalar>
SymbolicScalar janus::detail::clamp_query_point (const JanusVector< Scalar > &point, const std::vector< std::vector< double > > &grid)
template<JanusScalar Scalar>
bool janus::detail::point_out_of_bounds_numeric (const JanusVector< Scalar > &point, const std::vector< std::vector< double > > &grid)
SymbolicScalar janus::detail::point_out_of_bounds_symbolic (const SymbolicVector &point, const std::vector< std::vector< double > > &grid)
casadi::Function janus::detail::make_parametric_interpolant (const std::vector< std::vector< double > > &grid, InterpolationMethod method)
double janus::detail::catmull_rom_slope (const std::vector< double > &x, const std::vector< double > &y, size_t i)
 Compute Catmull-Rom slope at a point using neighboring values.
double janus::detail::hermite_interp_1d_numeric (const std::vector< double > &x, const std::vector< double > &y, double query)
 Evaluate 1D Catmull-Rom cubic Hermite spline (numeric only).
std::vector< int > janus::detail::flat_to_multi_index (int flat_idx, const std::vector< int > &dims)
 Compute multi-dimensional index from flat index (Fortran order).
int janus::detail::multi_to_flat_index (const std::vector< int > &multi, const std::vector< int > &dims)
 Compute flat index from multi-dimensional index (Fortran order).
double janus::detail::hermite_interpn_numeric (const std::vector< std::vector< double > > &grid, const std::vector< double > &values, const std::vector< double > &query)
 N-dimensional Catmull-Rom interpolation via tensor product (numeric only).
template<typename Scalar>
JanusVector< Scalar > janus::interpn (const std::vector< NumericVector > &points, const NumericVector &values_flat, const JanusMatrix< Scalar > &xi, InterpolationMethod method=InterpolationMethod::Linear, std::optional< Scalar > fill_value=std::nullopt)
 N-dimensional interpolation on regular grids (backwards compatibility).
template<typename Scalar>
SymbolicVector janus::interpn (const std::vector< NumericVector > &points, const SymbolicVector &values_flat, const JanusMatrix< Scalar > &xi, InterpolationMethod method=InterpolationMethod::Linear, std::optional< SymbolicScalar > fill_value=std::nullopt)
 N-dimensional interpolation with symbolic table values.

Detailed Description

N-dimensional interpolation (linear, Hermite, B-spline, nearest).

See also
ScatteredInterpolator.hpp