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 :

Ma methode marche pour un vecteur et ne marche pour un autre vecteur !? [Débutant]


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Par défaut Ma methode marche pour un vecteur et ne marche pour un autre vecteur !?
    J’ai un problème avec c++ builder , j’ai fait une méthode qui fait la convolution entre deux vecteur quant je utilise un vecteur x ça donne des bon et correcte résultat et qu’ant je utilise un autre vecteur ça donne des résultat non valide ( je vérifier mai résultat avec matlab la fonction wconv1 de matlab ) je ne c’est pas ou est le problème , voila 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
     
    double  signal[]={0.123,1.45,0.67};
    //double  x[]={0.1,1.4,1};
    double x[]={
             0 ,
             0 ,
             0 ,
             0 ,
             0 ,
        0.0018 ,
       -0.0045 ,
       -0.1231 ,
             0 ,
        0.1231 ,
        0.0045 ,
       -0.0018 ,
             0 ,
             0 ,
             0 ,
             0 ,
             0 };
    int Nx=sizeof(signal)/7;
    int Nh=sizeof(x)/4;
    int mine =min(Nx,Nh);
    int taill,taille1 ;
    taill= Nx+Nh-1 ;
    taille1=Nx+Nh;
    int maxe =max(Nx,Nh);
    double *code =new double[taill] ;
    code[0]=signal[0]*x[0];
    for(int k =1; k<taill ; k++)
    for(int j =0; j<taille1 ; j++)
    {
    if ((k+1-j>0) && (k+1-j<=mine) && (j<maxe))
         {
           int a=k-j;
           code[k]=code[k]+x[j]*signal[a];
         }
    }
    ShowMessage("voila les résultat de la convolution\n");
    ShowMessage(code[5]);
    Quant je utilise le premier X ça donne des bon resultat mai quant je itulise le deuxieme ça donne pas des bon resultat ?

    Normalement dans les deux cas ça donne ça pour des bon resulat :
    le premiers x :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    0.0123
        0.3172
        2.2200
        2.3880
        0.6700
    :
    le deuxieme x
    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
     
               0
               0
               0
               0
               0
        0.0003
        0.0021
       -0.0205
       -0.1816
       -0.0673
        0.1791
        0.0888
        0.0004
       -0.0013
               0
               0
               0
               0
               0
    mai ça marche que pour le premier et non pour le deuxieme ?!

    une autre question c'est comment faire un agrendisement d'une valeur 1.789 > 1.79

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int count = sizeof(signal) / sizeof(double);

    int Nx=sizeof(signal)/7;
    Tu as juste de la chance que 24 / 7 arrondit à 3 !!!
    Chez moi sizeof(double) donne 8 !

    A plus !

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Par défaut
    merci c'est j'ai trouvé la solution et merci pour votre aide , le probleme aité on cette fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    code[k]=code[k]+x[j]*signal[a];
    il falais que je permute ontre x et signal

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 14/01/2011, 14h00
  2. Quel langage pour me remettre sur le marché
    Par younid dans le forum Langages de programmation
    Réponses: 20
    Dernier message: 14/05/2008, 17h43
  3. Pour la function AnsiReplaceText ne marche pas
    Par zizo89 dans le forum Delphi
    Réponses: 2
    Dernier message: 17/05/2007, 19h32
  4. Réponses: 46
    Dernier message: 04/01/2007, 19h02
  5. Utlisation d'image pour les <li> qui ne marche pas
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 05/11/2005, 17h37

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