Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

fourier transformée



  1. #1
    acx01b

    fourier transformée


    ------

    Salut,
    quelqu'un a-t-il déja réussi à se servir de fftw3.h en C disponible ici: http://www.fftw.org/, ou d'un équivalent ?
    j'aimerais avoir juste un exemple du code pour transformer cos(X^2) et obtenir le spectre (ça je sais faire avec l'intégrale), si la librairie le permet, et surtout obtenir le spectre d'un signal (discret)

    merci beaucoup d'avance

    -----

  2. Publicité
  3. #2
    zoup1

    Re : fourier transformée

    Il y a une documentation qui est attaché à cette librairie.
    http://www.fftw.org/fftw3_doc/
    Elle n'est pas la plus claire possible mais bon...

    Le plus simple est sans doute d'utiliser la librairie en mode complexe. En reprenant l'exemple de la doc pour la transformée complexe...
    http://www.fftw.org/fftw3_doc/Comple...mensional-DFTs

    Après avoir fixé une valeur pour N, et exécuter les instructions d'allocation, il suffit sans doute de remplir le tableau in avec N valeurs complexes qui correspondent à tes données, en mettant comme partie relle du nombre ce que tu veux et comme partie complexe 0.

    Après avoir lancé d'exécution, tu vas récupérer dans le tableau out, le résultat de la fft. Avec sans doute une organisation particulière pour l'organisation des fréquences, que je te laisse découvrir.

    Si tu veux des infos là dessus, tu peux regarder le site de numerical recipies qui propose ses bouquins en ligne :
    http://www.library.cornell.edu/nr/cbookcpdf.html
    Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.

  4. #3
    acx01b

    Re : fourier transformée

    oki merci beaucoup, ça a l'air faisable,

    tu vas peut-être ta payer un bon fou rire, mais avant de découvrir l'existence de cette libraire j'ai commencé à essayer de faire un programme pour dessiner le spectre à partir d'un signal, en QBasic 45 ! et n'arrivant pas à utiliser le fftw3.h (en C pas en qbasic : D) j'ai terminé mon programme, qui marche!

    pour ceux qui ont vraiment envie de se taper un fou rire: www.hacking.free.fr/FFT3.BAS

  5. #4
    zoup1

    Re : fourier transformée

    Il n'y a pas de fou rire à avoir... Cette méthode de calcul que tu utilises est parfaitement valable... Elle est simplement pas très efficace en terme de temps de calcul mais c'est tout.

    Par contre, tu as peut-être interêt à voir ce que signifie apodisation d'un signal. Voir l'influence qu'a le fait que ton signal soit fini sur la forme de ton spectre. Cela est discuté dans les liens de numerical recipies et est très intructif...
    Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.

  6. A voir en vidéo sur Futura
  7. #5
    acx01b

    Re : fourier transformée

    petit probleme de compilation: apparement borland5.5 command line tools (bcc32) n'arrive pas à gérer le .lib:
    ma source a l'air apparement bonne: www.hacking.free.fr/fft.cpp

    mais le compilo me dit:
    D:\BORLAND\BCC55\BIN>bcc32 fft8 -Lfftw3.lib
    Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
    fft8.cpp:
    Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
    Error: Unresolved external '_fftw_malloc' referenced from D:\BORLAND\BCC55\BIN\F
    FT8.OBJ
    Error: Unresolved external '_fftw_plan_dft_2d' referenced from D:\BORLAND\BCC55\
    BIN\FFT8.OBJ
    Error: Unresolved external '_fftw_execute' referenced from D:\BORLAND\BCC55\BIN\
    FFT8.OBJ
    Error: Unresolved external '_fftw_destroy_plan' referenced from D:\BORLAND\BCC55
    \BIN\FFT8.OBJ
    Error: Unresolved external '_fftw_free' referenced from D:\BORLAND\BCC55\BIN\FFT
    8.OBJ

    sur un autre compilo ça marche mieux ?

  8. #6
    zoup1

    Re : fourier transformée

    sur le site ils indiquent un truc spécial pour borland avec un .lib et un .def...
    c'est bien cela que tu as utilisé ?
    Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.

  9. Publicité
  10. #7
    acx01b

    Re : fourier transformée

    déja merci pour tes réponses

    j'ai énormément avancé, j'ai réussi à utiliser FFTW3 dans c++builder6, j'ai en même temps appris à programmer les form et les composants graphiques de bases de l'api, je m'amuse comme un fou ; ) pour ceux qui n'ont pas envie d'essayer de déchiffrer les explications de www.fftw.org, vous pouvez allez voir mon post sur le forum c++ builder de developpez.com...

    finalement le dernier problème en date que j'ai rencontré c'est comment afficher le spectre d'un (petit) échantillon non plus en deux dimensions (les fréquences en absisses, et les amplitudes en ordonnées) mais en une dimension, avec les fréquences en ordonnée, pour chaque fréquence un point de couleur variable, exprimant l'amplitude (rouge pour les amplitudes fortes, bleu pour les amplitudes presque nulles),
    pour finalement pouvoir mettre le TEMPS en absisses (par exemple en calculant le spectre sur des échantillons de 50ms, 40fois par seconde de son)...

    la question la voici : que représente le module de Ak où Ak (k varie de 0 à N-1) est la transformée discrète d'un signal ? car une fréquence en hertz c'est le nombre de périodes par seconde...
    j'ai remarqué que la fréquence en hertz pouvait être calculée: sachant que l'on transforme un wav à 44100hertz mono 16bit, sur un échantillon de 2000 octets (après les 44 octets de l'en-tête pour un wav de base): si on cherche Ak pour k= 23, on cherche en fait l'amplitude de la fréquence 23*44100/2000 = 500hertz

    par contre l'amplitude Ak varie aussi en fonction de la taille de l'échantillon, mais aussi de la fréquence k...

    donc que représente Ak ???????? merci d'avance
    Dernière modification par acx01b ; 03/01/2005 à 00h21.

  11. #8
    acx01b

    Re : fourier transformée

    je voulais dire bien sur un échantillon de 4000 octets et non pas 2000 puisqu'il s'agit d'un wav mono sur 16bit...

    dans le cas d'un wav ne contenant qu'une sinusoïde pure de fréquence mettons 500hertz:

    j'ai l'impression que la valeur du module de Ak est une fonction de l'amplitude de la sinusoide pure, de la taille de l'échantillon, mais aussi du nombre de périodes présentes dans l'échantillon traité (si N est la taille de léchantillon, alors Ak est fonction de N, et de N/k*x où x est le tot de silence dans l'échantillon)...
    bien sur je me pose des questions pratiques telles que: pourquoi obtient-on des résultats bizarres lorsqu'on prend un échantillon ne contenant que une dizaine de périodes où moins, et quels résultats obtient-on lorsque l'on enlève une demie période où un dizième de préiode au signal....

    salut
    Dernière modification par acx01b ; 03/01/2005 à 01h19.

Discussions similaires

  1. transformée de fourier
    Par doogy3 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 11/10/2007, 10h21
  2. Transformée de Fourier
    Par Ecthelion dans le forum Mathématiques du supérieur
    Réponses: 7
    Dernier message: 19/11/2006, 19h35
  3. Transformée de fourier
    Par preston dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 03/10/2005, 19h57
  4. Transformée de Fourier
    Par juudku dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 30/05/2005, 04h59
  5. transformee de fourier
    Par fred123 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 17/04/2005, 14h38
Découvrez nos comparatifs produits sur l'informatique et les technologies.