Interpolation d'un signal échantilloné de manière aléatoire.

Espace de nom : tsd::filtrage

Prototype

Vecteur<T> interp(const Vecf &x, const Vecteur<T> &y, const Vecf &x2, InterpOption mode=LINEAIRE)

Paramètres

xVecteur des points d'échantillonnage en entrée (doit être un vecteur croissant).
yVecteur des valeurs connues de la fonction à interpoler.
x2Vecteur des points d'échantillonnage souhaités (doit être un vecteur croissant).
modeType d'interpolation souhaitée (linéaire ou spline naturelles).

Description

Cette fonction permet de rééchantilloner un signal de manière réguliére, alors que l'on ne connait les valeurs qu'en un ensemble de points, pas forcément équidistants. Plus précisément, étant donné un ensemble de \(N\) points \((x_k,f(y_k))\), on calcule un ensemble de valeurs \(f(x'_k)\), les \(x'_k\) étant équirépartis entre \(x_0\) et \(x_{N-1}\).

Exemple

  soit x  = Vecf::valeurs({0, 1, 2, 5, 6, 10}),
       y  = Vecf::valeurs({1, 2, -1, -4, -1, 1}),
       x2 = linspace(0, 10, 100),
       yi = interp(x, y, x2),
       yj = interp(x, y, x2, InterpOption::CSPLINE);

  Figures f;
  f.subplot().plot(x, y, "ob", "Points connus");
  f.gcf().plot(x2, yi, "g-", "Interpolation");
  f.gcf().titre("Interpolation linéaire");
  f.subplot().plot(x, y, "ob", "Points connus");
  f.gcf().plot(x2, yj, "g-", "Interpolation");
  f.gcf().titre("Interpolation par splines naturelles");
  f.afficher();