fft

Utilisation de Xcas

Modérateur : xcasadmin

c-top
Messages : 13
Inscription : mar. oct. 28, 2008 8:17 am
Localisation : Bordeaux
Contact :

fft

Message par c-top » mer. déc. 31, 2008 5:03 pm

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

c-top
Messages : 13
Inscription : mar. oct. 28, 2008 8:17 am
Localisation : Bordeaux
Contact :

Message par c-top » ven. janv. 09, 2009 5:25 pm

personne ne peut m'expliquer comment utiliser la FFT avec un signal périodique.

parisse
Messages : 5892
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Message par parisse » sam. janv. 10, 2009 8:14 am

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.

c-top
Messages : 13
Inscription : mar. oct. 28, 2008 8:17 am
Localisation : Bordeaux
Contact :

Message par c-top » sam. janv. 10, 2009 9:25 am

Ce qui me pose problème c'est la liste de nombres, car moi je ne dispose que de la fonction du signal, n'est-il pas possible que fft discrétise ma fonction en une liste de nombres ?

parisse
Messages : 5892
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Message par parisse » sam. janv. 10, 2009 1:07 pm

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)

Répondre