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

MATLAB Discussion :

problème avec conv


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut problème avec conv
    Bonjour
    J'ai cherché à faire la convolution discrète entre deux matrices B=ones(3,3) et A=magic(3), j'ai tapé le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    A = magic(3);
    B=ones(3,3);
    conv2(A,B)
     
    ans =
     
         8     9    15     7     6
        11    17    30    19    13
        15    30    45    30    15
         7    21    30    23     9
         4    13    15    11     2
    J'ai calculé la convolution discrète par sa formule ordinaire et je n'ai pas obtenu la même réponse, où est le problème?

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Tu trouveras l'algorithme utilisé par la fonctionCONV2 dans la page de la documentation correspondante :

    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je ne suis pas convaincu, je sait que conv(A,B)=FFT^-1(FFT(A).FFT(B)) en utilisant zero padding,
    mais si je calcul conv(A,B)=sum_i=1,N(sum_j=1,N) A(i)B(j-i) (i=(i1,i2), j=(j1,j2)) (sans passe par FFT), je n obtient pas la meme reponse, c est ici que je me deande ou est le probleme
    Merci

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    j´ai tape le code en fortran de la convolution discrete (sans FFT) en fortran j´ai obtenu seulement la premiere colone est identique a celle de FFT, svp pouvez vous me clarifier ce point
    voila mon 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
    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
     
     
    program gh
    integer i,j, i1,i2,j1,j2
    double precision A(0:2,0:2), B(0:2,0:2),C(0:2,0:2)
    A(0,0)=0.8147
    A(0,1)=0.9134
    A(0,2)=0.2785
    A(1,0)=0.9058
    A(1,1)=0.6324
    A(1,2)=0.5469
    A(2,0)=0.1270
    A(2,1)=0.0975
    A(2,2)=0.9575
     
    B(0,0)=0.9649
    B(0,1)=0.9572
    B(0,2)=0.1419 
    B(1,0)=0.1576
    B(1,1)=0.4854
    B(1,2)=0.4218 
    B(2,0)=0.9706
    B(2,1)=0.8003
    B(2,2)=0.9157
     
     
     
     
     
    do i1=0,2
       do j1=0,2
       C(i1,j1)=0.d0
          do i2=0,2
    	     do j2=0,2
    		    C(i1,j1)=C(i1,j1)+A(i1-i2,j1-j2)*B(i2,j2)
    	     enddo
          enddo
    	 print*, i1,j1,C(i1,j1)
    	enddo
    enddo
     
    end

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Ne connaissant pas le Fortran, je ne peux que poser quelques questions:
    - Pour i1,j1,i2,j2 dans {0, 1, 2}, tu auras plusieurs fois i1-i2 et j1-j2 en dehors des indices {0, 1, 2}, et donc dans ces cas, que retourne - De plus je vois que tu déclares C matrice 3x3 (initialisée avec des zéros?), donc est-ce que conv2(A,B,'same') répond à tes attentes?

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Alors comment definir le produit de convolution discret

  7. #7
    Invité
    Invité(e)
    Par défaut
    Ta définition est bonne, cependant il te faut faire attention aux indices qui posent problème.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Quést ce quíl faut modifier alors dans le programme

  9. #9
    Invité
    Invité(e)
    Par défaut
    Par exemple un test if i1-i2>=0 && j1-j2>=0 avant la ligne C(i1,j1)=C(i1,j1)+A(i1-i2,j1-j2)*B(i2,j2)

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 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