LA TRANSFORMÉE DE FOURIER RAPIDE À UNE DIMENSION

Messages postés
351
Date d'inscription
samedi 2 février 2002
Statut
Membre
Dernière intervention
6 mai 2004
- - Dernière réponse : 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

Afficher la suite 
lpikachu58
Messages postés
351
Date d'inscription
samedi 2 février 2002
Statut
Membre
Dernière intervention
6 mai 2004
2 -
Ah oui encore une précision c'est l'algorithme d'ashley et cohl qui utilise l'algo du papillon.
cs_LordBob
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
8 -
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 -
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
8 -
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 -
pas de mal
MangaII
Messages postés
129
Date d'inscription
dimanche 9 décembre 2001
Statut
Membre
Dernière intervention
12 janvier 2009
-
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 !
soumpro
Messages postés
52
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
7 mai 2004
-
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
-
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 ?
lpikachu58
Messages postés
351
Date d'inscription
samedi 2 février 2002
Statut
Membre
Dernière intervention
6 mai 2004
2 -
oui mais monsieur le python ça avance pas
lpikachu58
Messages postés
351
Date d'inscription
samedi 2 février 2002
Statut
Membre
Dernière intervention
6 mai 2004
2 -
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.
MangaII
Messages postés
129
Date d'inscription
dimanche 9 décembre 2001
Statut
Membre
Dernière intervention
12 janvier 2009
-
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 !
Maegis
Messages postés
101
Date d'inscription
vendredi 15 février 2002
Statut
Membre
Dernière intervention
6 août 2007
-
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 ....
Maegis
Messages postés
101
Date d'inscription
vendredi 15 février 2002
Statut
Membre
Dernière intervention
6 août 2007
-
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)
lpikachu58
Messages postés
351
Date d'inscription
samedi 2 février 2002
Statut
Membre
Dernière intervention
6 mai 2004
2 -
si tu veux en transformée temps fréquence position utilise la transformée en ondelette
roomsmush
Messages postés
16
Date d'inscription
mercredi 17 mars 2004
Statut
Membre
Dernière intervention
22 août 2005
-
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 -
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
Maegis
Messages postés
101
Date d'inscription
vendredi 15 février 2002
Statut
Membre
Dernière intervention
6 août 2007
-
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
jul39dole
Messages postés
117
Date d'inscription
mardi 22 juillet 2003
Statut
Membre
Dernière intervention
21 janvier 2011
-
Comment utilise-t-on concrètement cette fonction ? (à quoi correspondent les variable dir, m, *x et *y) ?
ElectronBreton
Messages postés
1
Date d'inscription
mardi 1 mars 2005
Statut
Membre
Dernière intervention
17 mars 2005
-
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 ...
Aida_81
Messages postés
2
Date d'inscription
dimanche 12 novembre 2000
Statut
Membre
Dernière intervention
30 mars 2005
-
Bonsoir,

Si tu peux expliquer ton code, l utilité de chaque variable utilisée ca serait bien, si c est possible.
Merci.
Aida.
nonoRed
Messages postés
4
Date d'inscription
mercredi 21 mai 2003
Statut
Membre
Dernière intervention
17 septembre 2009
-
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!
cs_JCDjcd
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
2 -
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.
loicus
Messages postés
46
Date d'inscription
mardi 27 août 2002
Statut
Membre
Dernière intervention
3 mai 2008
-
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
nonoRed
Messages postés
4
Date d'inscription
mercredi 21 mai 2003
Statut
Membre
Dernière intervention
17 septembre 2009
-
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 !
The Incredible Godzy
Messages postés
10
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
29 septembre 2008
-
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)
The Incredible Godzy
Messages postés
10
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
29 septembre 2008
-
Au fait la FFT permet de passer de n^2 (et pas 2^n) à n(log(n))... contrairement à ce qui est dit en haut.
Late2201
Messages postés
3
Date d'inscription
mercredi 16 septembre 2009
Statut
Membre
Dernière intervention
17 septembre 2009
-
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.
nonoRed
Messages postés
4
Date d'inscription
mercredi 21 mai 2003
Statut
Membre
Dernière intervention
17 septembre 2009
-
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
-
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
-
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
-
C'est pour le traitement d'un signal electrique