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

Calcul scientifique Python Discussion :

Fourier t'as jamais été mon copain, et même sous Python


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Par défaut Fourier t'as jamais été mon copain, et même sous Python
    Bonjour,
    je galère depuis deux jours.
    J'ai un signal fréquentiel de 10 MHz à 40 GHz que je dois transformer en temporel
    J'ai fait une TFD inverse toute simple et mon "Chefstain" veut que je vérifie que mon calcul est bon avec la fonction ifft... oui mais voilà, je n'arrive pas à la mettre en oeuvre !
    Voici mon programme pour la TFDinv :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #calcul par TFD inverse
    for n in range(0,len(Freq)):
        SigFreq = 0
        for nz in range(0, len(Freq)-1):
            #écriture de la valeur du signal à la fréquence donnée
            z = complex(float(RealS21[nz]), float(ImS21[nz]))
            SigFreq0 = (abs(z)*exp(phase(z)*1j))*exp((2*1j*pi*(1/float(Freq[n]))*(float(nz)/float(len(Freq)))))
            SigFreq = SigFreq0+SigFreq
        SigFreq = SigFreq/float(len(Freq))
    Pour IFFT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for nz in range(0,len(Freq)):
        SignalZ = signal(RealS21[nz],ImS21[nz])
        FFTinv = np.fft.ifft(SignalZ)
    ça me retourne une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
      File "R:/LABO HF/DEP HF/USER/PVincent/P114930/FFT inverse.py", line 135, in <module>
        FFTinv = np.fft.ifft(SignalZ)
      File "C:\Python27\lib\site-packages\numpy\fft\fftpack.py", line 246, in ifft
        n = shape(a)[axis]
    IndexError: tuple index out of range
    je sais que c'est de la façon que j'ai écrit ifft mais comme je n'y comprends rien, et que toutes les aides sur ce module sont in english... je ne m'en sors pas
    Merci pour votre aide qui me sera très préciseuse !

    Patricia

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Salut,

    np.fft.ifft(SignalZ) se vautre parce que la chose retournée par la fonction signal ne lui plaît pas.
    Si vous ne montrez pas a quoi ressemble cette fonction, pas facile d'en dire plus.

    Desole

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Par défaut voici mon fichier
    en PJ
    voici ce qu'il y a avant
    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
     
    #Extraction du fichier .csv et mise en forme de la liste
     
    def extractioncsv(fichiercsv):
        Freqcsv = []  #Extraction des valeurs de fréquence
        RealS21csv = []  #Extraction des valeurs de la partie réelle du S21
        ImS21csv = []  #Extraction des valeurs de la partie imaginaire du S21
        URealS21csv = []  #Extraction des valeurs de l'incertitude de la partie réelle du S21
        UImS21csv = []  #Extraction des valeurs de l'incertitude de la partie imaginaire du S21
        with open(fichiercsv, 'rb') as fcsv:
            lecteur = csv.reader(fcsv, delimiter=';')
            for ligne in lecteur:
                Freqcsv.append(ligne[1])
                RealS21csv.append(ligne[2])
                ImS21csv.append(ligne[3])
                URealS21csv.append(ligne[4])
                UImS21csv.append(ligne[5])
        return Freqcsv, RealS21csv, ImS21csv, URealS21csv, UImS21csv
     
    #Création des listes en retirant les deux lignes de titres
    listeDataS21 = extractioncsv(fileDataS21)
    Freq = listeDataS21[0]
    RealS21 = listeDataS21[1]
    ImS21 = listeDataS21[2]
    UcRealS21 = listeDataS21[3]
    UcImS21 = listeDataS21[4]
    del Freq[0:2], RealS21[0:2], ImS21[0:2], UcRealS21[0:2], UcImS21[0:2]
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    signal, signal, signal,...
    SignalZ = signal(RealS21[nz],ImS21[nz])le reste est probablement fort intéressant mais sans signal, pas la peine de le regarder.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Par défaut exact

    voici le signal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #Signal fréquentiel : visualisation pour calcul
    def signal(valRe,valIm):
        z = complex(float(valRe),float(valIm))
        Signal = abs(z)*exp(cmath.phase(z)*1j)
        return Signal
    c'est mieux avec ça ?
    Merci encore

    Patricia

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    C'est mieux!
    Votre fonction retourne un scalaire alors que fft.ifft demande un tableau (array-like). Un emballage de ce scalaire dans une liste, i.e np.fft.ifft([ SignalZ] ) devrait corriger l'erreur Python. Calculer une FFT avec une seule valeur en entrée, c'est la valeur. Pas la peine de faire un appel a np.fft.ifft dans ce cas, non?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/06/2007, 23h32
  2. Mon script de démarage sous init.d ne se lance pas
    Par zulul dans le forum Administration système
    Réponses: 18
    Dernier message: 12/06/2007, 23h39
  3. Réponses: 4
    Dernier message: 13/09/2006, 21h16
  4. [phpMyAdmin] lien entre mon code et phpMyAdmin sous xampp
    Par temperature dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 15/04/2006, 14h12

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