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 :

Produit de convolution


Sujet :

Calcul scientifique Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Produit de convolution
    Bonsoir,

    Je souhaite faire le produit de convolution de deux fonctions, pour cela, j'ai utilisé le module numpy et son outil convolve.
    J'ai testé sur la fonction porte en faisant la convolution de cette fonction par elle-même, mais je n'obtient pas le résultat escompté.

    Voici le code:
    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
     
    import numpy as np
    import matplotlib.pyplot as plt
     
    def porte(t):
          a=[]
          for i in t:
               if -0.5<=i<=0.5:
                   a.append(1.)
               else:
                   a.append(0)
           return a
     
    t=np.linspace(-1,1,1000)
    c=np.convolve(porte(t),porte(t))
    plt.plot(np.linspace(-1,1,len(c)),c)
    Le graphe ne me donne pas le même graphe que sur wikipédia, je trouve la même forme mais avec une largeur plus petite (entre -0.5 et 0.5 au lieu de -1 et 1).
    Savez-vous d'où peut venir ce problème ?

  2. #2
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Primo ton code est super lent alors que tu ne fais quasiment rien. Pardis, utilise la puissance de numpy !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    def porte(t):
          res=np.zeros(t.shape)
          res[ (-0.5<=t)*(t<=0.5) ] = 1
          return res
    (le and devant être remplacé par un symbole multiplier, le or serait remplacé par un +)

    Ensuite une lecture de la documentation de cette fonction de convolution
    https://docs.scipy.org/doc/numpy-1.1....convolve.html
    t'aurais permit peut-être d'essayer qqch comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c=np.convolve(porte(t),porte(t),'same')

  3. #3
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci Ig_53,


    En effet, c'est beaucoup plus rapide ainsi et le "same" me donne les bonnes valeurs pour les abscisses. Cependant, la valeur de la fonction en 0 est de 25 alors qu'elle devrait être de 1. En divisant par max(c) on trouve la bonne courbe.

Discussions similaires

  1. [Débutant] produit de convolution de deux vecteur
    Par kheira dans le forum C++Builder
    Réponses: 4
    Dernier message: 13/03/2010, 15h18
  2. [Débutant] Fonction artificielle & Produit de convolution
    Par sky-mars dans le forum Signal
    Réponses: 12
    Dernier message: 28/02/2010, 16h06
  3. Produit de convolution
    Par top111 dans le forum MATLAB
    Réponses: 9
    Dernier message: 19/06/2008, 14h48
  4. fft en 3 dimension pour un produit de convolution
    Par mattthieu dans le forum Calcul scientifique
    Réponses: 9
    Dernier message: 09/06/2008, 11h38
  5. produit de convolution en C
    Par nickoko dans le forum C
    Réponses: 8
    Dernier message: 21/06/2006, 16h10

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