LA TRANSFORMÉE DE FOURIER RAPIDE À UNE DIMENSION

lpikachu58 Messages postés 351 Date d'inscription samedi 2 février 2002 Statut Membre Dernière intervention 6 mai 2004 - 24 mars 2004 à 14:26
Late2201 Messages postés 3 Date d'inscription mercredi 16 septembre 2009 Statut Membre Dernière intervention 17 septembre 2009 - 17 sept. 2009 à 13:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/21423-la-transformee-de-fourier-rapide-a-une-dimension

Late2201 Messages postés 3 Date d'inscription mercredi 16 septembre 2009 Statut Membre Dernière intervention 17 septembre 2009
17 sept. 2009 à 13:47
C'est pour le traitement d'un signal electrique
nonoRed Messages postés 4 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 17 septembre 2009
17 sept. 2009 à 10:48
faudrait me donner le contexte précis de ton exo, parceque là ca remonte à deux ans,
c'est dans une image? ou un signal electrique?
Late2201 Messages postés 3 Date d'inscription mercredi 16 septembre 2009 Statut Membre Dernière intervention 17 septembre 2009
17 sept. 2009 à 09:45
D'accord, mais on m'avait conseillé de faire une FFT et de "ne sélectionner que le composant correspondant a 50 Hertz, (en dimensionnant subtilement mes fenêtres d'analyses...".

Mais je ne vois pas comment faire ça avec cet algo, à moins que cela ne soit a faire apres...
nonoRed Messages postés 4 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 17 septembre 2009
16 sept. 2009 à 17:07
late2201 : c'est ecrit un peu plus haut au dessus "* m est egale à log2 ( nn ) (environs deux heures pour le comprendre....) "

loicus : euh il me veut quoi le gamin ?
Late2201 Messages postés 3 Date d'inscription mercredi 16 septembre 2009 Statut Membre Dernière intervention 17 septembre 2009
16 sept. 2009 à 16:55
Salut,

Voila je m'interesse depuis peu a la transformée de Fourier dans le but de faire un filtre numérique.

Certains l'ont deja demandé mais ils n'ont pas eu de réponse alors je réessaie :p

Serait-il possible d'avoir plus de détails sur l'algo en lui-même ?

A quoi correspond le paramètre m, et comment influence-t-il l'algo ?

Merci d'avance.
The Incredible Godzy Messages postés 10 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 29 septembre 2008
25 mai 2007 à 17:31
Au fait la FFT permet de passer de n^2 (et pas 2^n) à n(log(n))... contrairement à ce qui est dit en haut.
The Incredible Godzy Messages postés 10 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 29 septembre 2008
25 mai 2007 à 17:26
C'est marrant la discussion reprend 1 an et demi plus tard comme si de rien n'était...

Toujours est-il que si la première partie du code est "magique", elle marche super bien et je connaissais pas l'algo, en revanche le reste j'y comprend strictement rien, et je vois pas comment on se passe des racines n-ièmes de l'unité dans le calcul de fourier.

Et puis bon... je sais que je suis un noob du C, mais quand même... meme algorithmiquement... sans commentaires c'est impanable (à moins de connaître déjà l'algo, et dans ce cas ça sert à rien de lire ce code...).

Ah oui dernière chose, chez moi il plante avec un segmentation fault quand on teste! (mais bon y'a des choses bizarres qui se passent avec DevCpp chez moi alors... :p)
nonoRed Messages postés 4 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 17 septembre 2009
24 mai 2007 à 09:39
LOICUS : :)) j'aime bien les mecs qui pensent tout savoir, alors qu'en fait ils sont à coté de la plaque...
tu sais ce que c'est le second degré? pas celui des maths je precise!!!!
nan?
pas etonnant! un geek comme toi devrait trouver son bonheur wikipedia !
loicus Messages postés 46 Date d'inscription mardi 27 août 2002 Statut Membre Dernière intervention 3 mai 2008
24 mai 2007 à 09:23
En réponse à nonoRed :

si il te faut 2 heures pour comprendre que m est log2 de nn : tu ne dois pas être un grand mathématicien... ;)

ligne 7 :
nn 1<<m; --> nn 2^m --> m = log2 nn

il m'a fallu 4sec

bonne continuation quand même
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
22 mai 2007 à 16:12
Bon bon bon ...

(1) bizarre cette transformee de fourrier rapide ... pas de fonction recursive ... aucun signe de racine-nieme de l'unite ... Enfin bon si ca marche, moi je veux bien. Mais d'habitude on voit l'algorithme en recursif, alors il serait bon de le preciser.

(2) une petite question (meme si je sais que cette source date un peu), avez-vous (je parle aussi bien de l'auteur que des downloaders de cette "source") une fois dans votre vie teste cette fonction ? j'etends par la, regarder si elle marche, si (sans trop etre vulgaire ou mal poli) elle ne serait pas buggee ?

(3) une grande question : avez-vous verife la complexite ? il suffirait de tracer le temps de calcul en fonction de N ... c'est ce sont des choses interessantes et convainquantes quant a la validite du programme.

(4) En lisant les commentaires sur les "reinventeurs de poudres", et bien moi je donne 100% raison a ceux qui reprogramme par eux-meme les choses, car c'est comme cela que l'on apprend, car en poussant l'argument adverse (c'est de la mauvaise foi, je vous l'accorde, mais ca se tient) pourquoi apprendre le C++ par un hello-world ?? ca a deja etet fait 100 millions de fois, alors pourquoi ne pas commencer par les choses difficiles... De plus vous oubliez une chose tres important (sans etre le paranoique de service) mais beaucoup de code copie sont FAUX, plein de bug, donc il y a un certain merite a refaire ce qui exixte a sa propre sauce.

(5) si vous vous dites "mais pour qui il se prend", je vais vous repondre : "pour un petit merdeux" (je crois que la charte n'interdit pas de s'auto-insulter :) )

(6) pour des preuves "graphiques" de complexite : http://www.cppfrance.com/codes/MULTIPLICATION-POLYNOMES-LOG_32745.aspx
avec en plus une application : la multiplication en n.log(n) de polynome de degre n

(7) je trouve cette source nulle

(8) un peu plus de commentaires aurait ete pas mal ... et en francais car cppFRANCE.com ...

cordialement le merdeux de service.
nonoRed Messages postés 4 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 17 septembre 2009
27 déc. 2005 à 13:53
bonjour tout le monde, au bout de deux heures de test en tout genre j'ai reussi à comprendre que :
* x et y servent pour stocker le resultat et le tableau d'orgine :
- x est le tableau des parties reelles
- y est le tableau des parties imaginaires
(encore là ca va, ca m'a pris deux secondes)

* nn est le nombre de points total dans le tableau (traduction de l'anglais)

* m est egale à log2 ( nn ) (environs deux heures pour le comprendre....)

* un code commenté s'est vachement bien!
Aida_81 Messages postés 2 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 30 mars 2005
31 mars 2005 à 00:50
Bonsoir,

Si tu peux expliquer ton code, l utilité de chaque variable utilisée ca serait bien, si c est possible.
Merci.
Aida.
ElectronBreton Messages postés 1 Date d'inscription mardi 1 mars 2005 Statut Membre Dernière intervention 17 mars 2005
17 mars 2005 à 11:28
Pour Manga II > Si tu veux faire de la transformée temps fréquence, il faut que tu t'intéresse à la transformée de WiegnerVille. Ca doit pouvoir se trouver sans trop de problèmes sur "Numerical Recipes In C"

Par contre, la transformée de fourier peut s'avérer amplement suffisante pour détecter des fréquences sur un intervalle de temps ~100 fois supérieur à ta fréquence d'échantillonnage (44,1 kHz à tout les coups ...). Tout dépend de la précision que tu souhaites ...
jul39dole Messages postés 117 Date d'inscription mardi 22 juillet 2003 Statut Membre Dernière intervention 21 janvier 2011
18 nov. 2004 à 18:53
Comment utilise-t-on concrètement cette fonction ? (à quoi correspondent les variable dir, m, *x et *y) ?
Maegis Messages postés 101 Date d'inscription vendredi 15 février 2002 Statut Membre Dernière intervention 6 août 2007
5 mai 2004 à 14:32
1) : un peu de modération, si tu regardes la charte tu verra qu'il faut eviter les insultes. Le seul point négatif que je t'ai signalé c'est que tu n'as pas dit d'ou ça venait, je ne t'ai pas insulté et je ne pense pas que tu ne comprennes pas ce code.
2)Au contraire de ce que tu crois, je pense que pour bien comprendre le fonctionnement d'un programme, il est necessaire, non peut etre pas de le refaire depuis zero, mais au moins d'en comprendre le principe. Ca s'appelle de la curiosité, quand je vois un truc, je veux savoir comment ça marche, et ça peut passer par le fait de refaire toute la reflexion toi même, ça te permet de mieux comprendre le truc. Bien entendu, ça ne veut pas dire que je n'utilise pas de bibliotheques ou des bouts de code d'autres gens qui on passé du temps dessus d'ou une certaine optimisation.
Exemple : Si tu regardes dans le site, il y a un gars qui a réécrit les fonction de math.h dont les ln, les exp les sin etc... je ne pense pas que beaucoup de gens vont prendre son code et l'utiliser à la place des fonctions standards mais ne me dis pas que ça ne t'interesse pas de savoir comment on fait pour calculer un ln etc ...
De même, pour compresser des données, je suis d'accord pour utiliser une biblio bien optimisée et tout ça , mais c'est bien de savoir les differentes methodes de compression et leur mise en oeuvre, ce serait quand meme bete de s'en priver :)
En gros ça permet une meilleure connaissance des méthodes de programmation et du fonctionnenemt interne. Mais tout refaire tout seul depuis le début et ne pas utiliser des choses faites par des autres personnes, la je suis d'accord avec toi, ce n'est pas le mieux qu'on puisse faire
lpikachu58 Messages postés 351 Date d'inscription samedi 2 février 2002 Statut Membre Dernière intervention 6 mai 2004 2
5 mai 2004 à 10:38
maegis t'es toujours aussi con à ce que je vois. Toi tu préfères réinverter la roue à chaque fois alors que ce n'est pas utile
roomsmush Messages postés 16 Date d'inscription mercredi 17 mars 2004 Statut Membre Dernière intervention 22 août 2005
2 avril 2004 à 15:40
c pas sympa ce que tu dis maegis, pour des gens qui se contentent de se rendre sur cppfrance, c sympa de trouver des codes utiles même si les auteurs les ont recopié, moi je suis bien content de l'avoir trouvé ici ce code mais c vrai que t'aurais pu mieu expliquer leur code lpikachu58
lpikachu58 Messages postés 351 Date d'inscription samedi 2 février 2002 Statut Membre Dernière intervention 6 mai 2004 2
31 mars 2004 à 13:13
si tu veux en transformée temps fréquence position utilise la transformée en ondelette
Maegis Messages postés 101 Date d'inscription vendredi 15 février 2002 Statut Membre Dernière intervention 6 août 2007
31 mars 2004 à 07:05
Au final, en regardant dans les codes que t'as poster, il n'y en a pas beaucoup que tu as ecrit de ton propre chef
Si tout le monde postait tout les codes utiles qu'il trouverait sur internet par ci par la , il y aura des montagnes de trucs tout en anglais, pas forcement expliqué ni bien commenté.
Au final ça fait un peu, le gars qui poste des codes pour en avoir plus memem s'il comprend pas ce qu'il poste (je ne veut pas dire que tu ne comprends pas ce que tu postes mais c'est une impression que ça pourrait donner)
Maegis Messages postés 101 Date d'inscription vendredi 15 février 2002 Statut Membre Dernière intervention 6 août 2007
31 mars 2004 à 07:00
http://astronomy.swin.edu.au/~pbourke/analysis/dft/
<--- Source d'origine. C'est tout du recopié à la virgule prêt alors ce serais bien de preciser au debut ou tu as pris le code ....
MangaII Messages postés 129 Date d'inscription dimanche 9 décembre 2001 Statut Membre Dernière intervention 12 janvier 2009
30 mars 2004 à 16:17
c'est sympa tout ca ! mais ca m'avance pas bcp !
pou résumer, je cherche un petit bout de code (en C++ de préférence), qui permet de détecter les amplitutes de certaines fréquences à un instant T sur un signal sonore numérisé (format wave).
Le but principal est de déctecter les basses (évidemment)
Merci bcp !
lpikachu58 Messages postés 351 Date d'inscription samedi 2 février 2002 Statut Membre Dernière intervention 6 mai 2004 2
30 mars 2004 à 09:25
Pour Manga 2 la trans formée de fourier est une intégration en exponentielle sur plus ou moins l'infini. Donc si tu veux faire une FFT d'un signal sonore il faut le stocker puis faire sur son intégralité et virer les fréquences inaudibles par exemple. Cependant dans l'espace de fourier tu perds toutes informations sur le temps T.
lpikachu58 Messages postés 351 Date d'inscription samedi 2 février 2002 Statut Membre Dernière intervention 6 mai 2004 2
30 mars 2004 à 09:19
oui mais monsieur le python ça avance pas
MangaII Messages postés 129 Date d'inscription dimanche 9 décembre 2001 Statut Membre Dernière intervention 12 janvier 2009
29 mars 2004 à 23:03
Merci du renseignement ! mais ca m'avance pas beaucoup !
Si c'est si cours, tu pourrai le fournir !
et c'est koi le rapport avec l'anglais ?
soumpro Messages postés 52 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 7 mai 2004
29 mars 2004 à 18:25
Ce code tient en 4 lignes en python !
lol !
Mais tes anglophone ou koi ?
(hum) !? %{
MangaII Messages postés 129 Date d'inscription dimanche 9 décembre 2001 Statut Membre Dernière intervention 12 janvier 2009
29 mars 2004 à 12:49
Salut !
J'ai qques lacunes en math ! malgrès mon BTS info !
Si mes souvenirs son bons, la transformée de fourier appliquée à un signal sonore te permet d'avoir les fréquences des armoniques !
Donc, le spectre du son !
donc, à la compression MP3 ! enfin ! c'est pas la que je ve en venir !

Je voulais savoir si ton code permet de retrouver les armoniques d'un son à un instant T (ou sur qques ms), en vue de faire un spectre, ou seulement pour déctecter une certaine fréquence (les basses en particulier).
Merci d'avance !
A+ NICO !
lpikachu58 Messages postés 351 Date d'inscription samedi 2 février 2002 Statut Membre Dernière intervention 6 mai 2004 2
26 mars 2004 à 09:05
pas de mal
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
25 mars 2004 à 16:48
excuse moi c'est parce que en fait je me suis trompé de source !!! (j'ai honte) désoler
lpikachu58 Messages postés 351 Date d'inscription samedi 2 février 2002 Statut Membre Dernière intervention 6 mai 2004 2
25 mars 2004 à 09:38
merci mais la c'est du C tout a fait standart
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
24 mars 2004 à 21:06
je suis contre les MFC, mais la je n'ai rien d'autre a dire que BRAVO !!!
excelente source !!!
lpikachu58 Messages postés 351 Date d'inscription samedi 2 février 2002 Statut Membre Dernière intervention 6 mai 2004 2
24 mars 2004 à 14:26
Ah oui encore une précision c'est l'algorithme d'ashley et cohl qui utilise l'algo du papillon.
Rejoignez-nous