Echantillonnage

Ce petit exemple a pour but d'illustrer le phénoméne de repliement de spectre. Nous échantillonnons pour cela deux simples sinusoïdes de fréquences différentes.

/*  @param fe Fréquence d'échantillonnage
 *  @param sigs Vecteur de spécifications pour signaux sinuisoidaux (fréquences et phases) */
Figure exemple_echan(float fe, const vector<EchanExemple> &sigs)
{
  Figure figure;

  // Parcours les 2 signaux
  pour(auto &s: sigs)
  {
    // Fréquence d'échantillage :
    // soit celle sélectionnée,
    // soit une plus importante pour simuler le signal à temps continu.
    pour(auto f: {fe, 1.0e4f})
    {
      string coul = (&s == &sigs[0]) ? "b" : "r";
      soit t = intervalle_temporel(1.0f, f),
           x = sin(2*π*s.fs*t+s.φ);
      figure.plot(t, x, coul + ((f == fe) ? "o" : "-"));
    }
  }
  retourne figure;
}

Commençons avec deux sinusoïdes dont les fréquences sont espacées de 10,5 Hz :

exemple_echan(10, {{3}, {13.5}}).afficher();

Fréquence d'échantillonnage : 10 Hz, fréquences des deux signaux : 3 et 13,5 Hz.

Les ronds rouges et bleus indiquent les valeurs échantillonnées. Notez que les valeurs des deux signaux après échantillonnage sont différentes : il est donc possible de distinguer les deux signaux. Maintenant, changeons la fréquence du deuxième signal de manière à ce que les deux fréquences soient espacées exactement de 10 Hz (soit la fréquence d'échantillonnage) :

exemple_echan(10, {{3}, {13}}).afficher();

Fréquence d'échantillonnage : 10 Hz, fréquences des deux signaux : 3 et 13 Hz.

Remarquez que cette fois les deux signaux, après échantillonnage, sont indiscernables.