Finalement, pour le challenge, je décide de tout faire moi meme. Je passe donc par la définition de la décomposition en série de fourier. Soit an = 2/T intégrale(f(t)*cos(n #omega# t) dt, t', t'+T). En gros l'intégrale sur une période de la fonction * cos (n * oméga * t). Et pour les bn, c'est sinus.
J'ai fait une fonction d'intégration qui utilise l'approximation de l'aire (par des rectangles, pas la méthode des tangentes). Elle prend pour argument un tableau de valeur de la fonction et les bornes d'intégration. Ca ressemble à ca :
function integrale($val, $a=0, $b=NULL) {
if($b == NULL) { $b = count($val); }
$val_int = 0;
$nbr_pts = 50000;
$pas = ($b-$a)/$nbr_pts;
for ($i=0; $i<$nbr_pts; $i++) {
$val_int+= $val[$a + $pas*$i]*$pas;
}
return $val_int;
}
Je l'ai testé vite fait sur des polynomes et des fonctions trigonométriques circulaires, elle a l'air de marcher. Je vais l'adapter au données du wav et faire un algorithme pour l'obtention des an et bn.