Bonjour à tous, je suis un petit nouveau sur le forum, Je me présente rapidement, je m'appelle Maxime, j'ai 20ans, je suis en école d'ingé (UTC)
Je viens ici car j'ai quelques petites questions concernant le traitement du signal, plus particulièrement l'utilisation de la fonction fft de scilab..
Mon but est de pouvoir voir les différentes fréquences présentent dans un signal échantillonnée à 48kHz.
Je me suis créé un petit fonction qui charge un fichier contenant les données, et affichant le spectre de fréquence :
Les paramètres Fech et P corresponde aux Fréquences d'échantillonnage et aux nombres de points de la FFT que l'on souhaite.Code:function fftnorm(Fech, P) load('Fichier.dat') //chargement du fichier de donnée, les points sont dans une variable y X=abs(fft(y(1:P))); //calcul de fft f=Fech*(1:((P)/2))/(P); // création vecteur fréquence v=size(f, '*'); plot(f, X(1:v)) //Affichage spectre endfunction
Cette petite fonction fonctionne très bien.
Mon problème est au niveau de la résolution fréquentiel..
Mon signal à analyser contient 12tons compris entre 40 et 80Hz. Ce qui signifie que la résolution de 1Hz est impérative pour avoir quelque chose de propre.
Si je lance fftnorm(48000, 48000) j'aurai une résolution de 1Hz par coeff de fourrier.
Pour les HF, cela ne pose pas de problème, je peux même lancer ma fonction sur bcp moins de points (donc meilleur reso temporelle) et le rendu sera correct
Mais le problème est sur les BF. En effet je trouve cela étrange que pour voir BF, je sois obligé d'attendre 1secondes de signal pour faire ma FFT ( la résolution temporelle devient donc déplorable, sachant que mon but est de faire du traitement en RT).
Je pense qu'il est possible de détecter des BF, sans pour autant attendre 1s de signal et donc avoir une mauvaise résolution temporelle.
La résolution Fréquentielle d'une FFT ne peux pas être inférieur à 1Hz???
La première idée que j'ai eu est d'extrapoler mes points pour en doubler le nombre...
Je me retrouve avec 96K pts. L'idée était de lancer ma fonction en lui disant que Fech= 48k de faire la FFT sur 48k pts. Je pensais ainsi avoir le même résultat en utilisant seulement la moitié du signal, mais erreur de ma pars, j'obtiens bien mes 12tons, mais dans l'octave d'en dessous ( entre 20 et 40Hz) et en regardant ma fonction cela est complètement logique...
J'espère avoir été clair, pour essayé de trouver une réponse à toutes ses questions que je vais me procurer les sources d'un compresseur mp3 ( Bladeenc ) et chercher dans son code source l'endroit ou la FFT est effectué pour comprendre mieux son fonctionnement!
J'espère n'avoir pas dit trop de bêtise dans ce post
Merci par avance à toutes les personnes répondant à ce sujet
Cordialement
Maxime
-----