Bonjour,
j'aimerais réaliser la FFT d'un signal sonore du type sin(3140x)+sin(1570x)
pour obtenir les harmoniques dans un graphe F(Hz) en fonction de l'amplitude.
Quelqu'un peut-il m'aider ?
merci
fft
Modérateur : xcasadmin
desole, je n'avais pas vu le message!
Vous pouvez utiliser l'instruction fft qui prend en argument une liste de réels, qui est l'échantillonage de votre signal sonore (donc la liste des intensités du son à intervalle de temps réguliers). Vous aurez une liste de nombre complexes, dont vous pouvez représenter le module avec par exemple
plotlist(abs(fft(v)))
Il vous reste alors à traduire l'échelle des x de la représentation en Hz en fonction de l'intervalle d'échantillonage et de la longueur de v.
Vous pouvez utiliser l'instruction fft qui prend en argument une liste de réels, qui est l'échantillonage de votre signal sonore (donc la liste des intensités du son à intervalle de temps réguliers). Vous aurez une liste de nombre complexes, dont vous pouvez représenter le module avec par exemple
plotlist(abs(fft(v)))
Il vous reste alors à traduire l'échelle des x de la représentation en Hz en fonction de l'intervalle d'échantillonage et de la longueur de v.
Autrement dit, vous voulez simuler la génération de v, c'est ça?
Si c'est à partir de la fonction sin(3140x)+sin(1570x), vous pouvez par exemple faire
v:=seq(sin(3140x)+sin(1570x),x,1,2^10)
on obtient pour la fft 2 pics symétriques de chaque coté de x=2^9.
Sinon, il doit être possible de récupérer des fichiers wav avec a:=readwav("nom_du_fichier.wav");
a[0] donne des infos (nombre de canaux, echantillonage, etc.)
a[1] pourrait servir de v (mais il faut sans doute tronquer le nombre d'éléments à une puissance de 2 pour que la fft marche suffisament vite)
Si c'est à partir de la fonction sin(3140x)+sin(1570x), vous pouvez par exemple faire
v:=seq(sin(3140x)+sin(1570x),x,1,2^10)
on obtient pour la fft 2 pics symétriques de chaque coté de x=2^9.
Sinon, il doit être possible de récupérer des fichiers wav avec a:=readwav("nom_du_fichier.wav");
a[0] donne des infos (nombre de canaux, echantillonage, etc.)
a[1] pourrait servir de v (mais il faut sans doute tronquer le nombre d'éléments à une puissance de 2 pour que la fft marche suffisament vite)