IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Transformé de Fourrier


Sujet :

C++Builder

  1. #1
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut Transformé de Fourrier
    Bonjour à tous

    Je cherche à faire une transformé de fourrier sur un tableau de points (FFT en X et en Y).

    J'ai donc fait des recherche sur le forum et j'ai vu qu'il fallait utiliser FFTW.

    J'ai donc récupéré FFTW, créé les lib pour Borland C++ builder (implib)

    J'ai collé les dll dans C:\windows/System32
    les lib dans C:\Program Files\Borland\CBuilder6\lib
    le .h dans C:\Program Files\Borland\CBuilder6\Include

    Le problème, c'est que j'ai à la compilation des erreus external sur toute les fonction.

    D'ou peut venir mon pb.

    Merci d'avance pour votre aide

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2002
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 343
    Par défaut
    Voilà un source utilisant les série de fourriers. Source. Je ne sais pas si c'est ce dont tu parles (FFTW), car je n'ai pas essayé d'installer.

    Bon courage

  3. #3
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Merci beaucoup, si ca marche tu me sauve car je cherche ca désespérément. Et je n'avais pas pensé à aller regarder dans les sources.

  4. #4
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Je viens de regarder la source et franchement, je patoge.

    Est-ce que quelqu'un l'aurais déjà utilisé et pourrais m'expliquer comment ça marche.

    Sinon concernant l'utilisation de FFTW, est-ce que quelqu'un l'aurais déjà utilisé sous C++ builder et pourrais me donner des tuyos pour arriver à l'utiliser.

    J'ai suivit les explications fournis pour l'installation et l'utilisation et j'ai toujours des external error sur toutes les fonctions fftw.

  5. #5
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Salut,
    j'ai trouvé ca, si ca peut t'aider.

  6. #6
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Merci à toi. En fait je l'avais déjà trouver mais cela me pose un souci avec le type complexe car je ne sais pas quel type utilisé sous borland.

  7. #7
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Il existe la librairie "complex.h"
    il y a un exemple dans l'aide, si ca peut te faire avancer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     #include <iostream>
     #include <complex>
     
    using namespace std;
     int main(void)
     {
        double x = 3.1, y = 4.2;
        complex<double> z(x,y);
        cout << "z = " << z << "\n";
        cout << "  has real part = " << real(z) << "\n";
        cout << "  and imaginary part = " << imag(z) << "\n";
        cout << "z has complex conjugate = " << conj(z) << "\n";
     
        double mag = sqrt(norm(z));
        double ang = arg(z);
        cout << "The polar form of z is:\n";
        cout << "   magnitude = " << mag << "\n";
     
        cout << "   angle (in radians) = " << ang << "\n";
        cout << "Reconstructing z from its polar form gives:\n";
        cout << "   z = " << polar(mag,ang) << "\n";
        return 0;
     }

  8. #8
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Merci à toi Bandy Boy

    J'ai un soucis de traduction dans l'algo, à un endroit il y a :

    Et je ne vois pas comment traduire ca en C++

    Sinon concernant l'utilisation de FFTW sous C++ Builder, je renouvelle mon appel au secours, est-ce quelqu'un l'aurais déjà utilisé et pourrais m'expliquer comment il a fait car j'ai toujours des externals errors sur chaque fonction.

  9. #9
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Tu as bien inclus les .lib dans ton projet ?

  10. #10
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Oui, je viens de le refaire complètement et c'est toujours pareil.

  11. #11
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Normalement, les unsolved extarnals - dont tu ne nous dis même pas un mot... - indiquent la bibliothèque qui manquent.
    Sinon, je compte faire un tuto sur la FFT, mais je n'ai pas eu le temps de finaliser la chose

  12. #12
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    J'ai mis dans le répertoire de mon appli les dll, les lib que j'ai généré et le .h
    J'ai inclus le .h dans ma classe ou je veux l'utiliser.
    J'ai ajouter les lib et le .h dans mon projet

    Voilà ma fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    // Méthode qui permet de calculer la FFT
    // Indice Debut et IndiceFin sont des indices pour la portion de ma liste de points que je dois traiter. 
    // TCalculs est un classe qui contient plusieurs liste. 
    void __fastcall TOnglet::FFT(int IndiceDebut, int IndiceFin, TCalculs *LesCalculs)
    {
            // Variables pour le calculs
            double *in;
            fftw_complex *out;
            fftw_plan p;
     
            // Nombre de points
            int N = (IndiceFin - IndiceDebut) + 1;
     
            // On dimensionne le tableau d'entrée
            in = (double*) fftw_malloc(sizeof(double) * N);
     
            // On dimensionne le tableau de sortie
            out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
     
            // On rempli le tableau d'entrée
            for(int i = 0; i < N; i++)
            {
                    // On extrait le point X TPointD est une classe de points avec des coordonnées double
                    TPointD *Point = (TPointD *)(LesCalculs->ListeDesPoints->Items[i]);
     
                    in[i] = Point->x;
            }
     
            p = fftw_plan_dft_r2c_1d(N, in, out, FFTW_ESTIMATE);
     
            fftw_execute(p); /* repeat as needed*/
     
     
            ListeFFT = new TList();
     
            // On rempli le tableau de la FFT
            for(int i = 0; i < N; i++)
            {
                    ListeFFT->Add(out[i]);
            }
     
     
            fftw_destroy_plan(p);
            fftw_free(in); fftw_free(out);
    }
    et voilà les erreurs que j'ai

    [Lieur Erreur] Unresolved external '_fftw_malloc' referenced from C:\DOCUMENTS AND SETTINGS\CSIRANDRE\MES DOCUMENTS\PROGRAMMES\DERNIÈRES VERSIONS\CALCULPLATEFORME\LIBRAIRIES\TONGLET3\TONGLET.OBJ
    [Lieur Erreur] Unresolved external '_fftw_plan_dft_r2c_1d' referenced from C:\DOCUMENTS AND SETTINGS\CSIRANDRE\MES DOCUMENTS\PROGRAMMES\DERNIÈRES VERSIONS\CALCULPLATEFORME\LIBRAIRIES\TONGLET3\TONGLET.OBJ
    [Lieur Erreur] Unresolved external '_fftw_execute' referenced from C:\DOCUMENTS AND SETTINGS\CSIRANDRE\MES DOCUMENTS\PROGRAMMES\DERNIÈRES VERSIONS\CALCULPLATEFORME\LIBRAIRIES\TONGLET3\TONGLET.OBJ
    [Lieur Erreur] Unresolved external '_fftw_destroy_plan' referenced from C:\DOCUMENTS AND SETTINGS\CSIRANDRE\MES DOCUMENTS\PROGRAMMES\DERNIÈRES VERSIONS\CALCULPLATEFORME\LIBRAIRIES\TONGLET3\TONGLET.OBJ
    [Lieur Erreur] Unresolved external '_fftw_free' referenced from C:\DOCUMENTS AND SETTINGS\CSIRANDRE\MES DOCUMENTS\PROGRAMMES\DERNIÈRES VERSIONS\CALCULPLATEFORME\LIBRAIRIES\TONGLET3\TONGLET.OBJ
    Pour écrire ce code, j'ai suivit un exemple dans un autre post de ce forum ici

  13. #13
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Je ne sais pas comment tu les ajoutes, en tout cas, tu ne lie clairement pas avec ce qu'il faut !
    Tu utilises quelle version de FFTW ? - single ou double precision ? -

  14. #14
    Membre émérite
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 137
    Billets dans le blog
    5
    Par défaut Fftw
    Citation Envoyé par kurul1
    Je viens de regarder la source et franchement, je patoge.

    Est-ce que quelqu'un l'aurais déjà utilisé et pourrais m'expliquer comment ça marche.

    Sinon concernant l'utilisation de FFTW, est-ce que quelqu'un l'aurais déjà utilisé sous C++ builder et pourrais me donner des tuyos pour arriver à l'utiliser.

    J'ai suivit les explications fournis pour l'installation et l'utilisation et j'ai toujours des external error sur toutes les fonctions fftw.
    Salut

    J'ai utilisé FFTW avec visual studio 2005 sans souci (ce qui tient du miracle). Sous CBuilder je n'en ai pas encore eu l'occasion.
    Toute fois lorsque tu as téléchargé FFTW vérifie bien que tu as chargé la bonne version car de mémoire je crois qu'il y a une version Linux.

    Pour ce qui est de la traduction en C de
    IF (i.LT.j)
    Je le traduirais par if(i<J) sau erreur ça resemble à du Fortran

    Enfin fait toujours tes calculs de FFT en double précision il y a trop d'erreur sinon.

    Tu peux aussi allez voir à cette adresse http://www.numerical-recipes.com/nronline_switcher.html
    Il y a de très bonnes explication sur la FFT (bon c'est en anglais)

    A+

    Rémi

  15. #15
    Membre confirmé Avatar de larimoise
    Inscrit en
    Octobre 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 220
    Par défaut
    Salut,

    je t'ai répondu sur ta question sur le forum Algorithme, et justement à propos de numerical recipces qui contient différentes fonctions dont la fft.


    A+

  16. #16
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Je vais regarder ca Larimoise, Merci beaucoup

    Miles, justement je ne sais pas laquelle j'utilise, j'ai coller les trois dll et les trois lib dans mon répertoire et les ai ajouter toutes les 3 dans mon projet.

    Peut-tu me dire comment faire pour utiliser la bonne librairie et les bonnes fonctions car là franchement je rame.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transformée de fourrier
    Par latsou dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 21/04/2009, 10h06
  2. implementation de la transformé de Fourrier !
    Par The-msx dans le forum Traitement d'images
    Réponses: 8
    Dernier message: 17/09/2008, 15h15
  3. Calculer une transformer de fourrier un peu spéciale
    Par 2click dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/01/2008, 17h28
  4. Detection Audio - Transformée de Fourrier
    Par Black-Ghost dans le forum C#
    Réponses: 8
    Dernier message: 03/12/2007, 08h34
  5. [Signal] Transformé de Fourrier
    Par kurul1 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 06/12/2006, 08h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo