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

Algorithmes et structures de données Discussion :

algorithme Cordic pour atan()


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 64
    Points : 35
    Points
    35
    Par défaut algorithme Cordic pour atan()
    Bonjour,

    j'avais déja posté un post sur le sujet d'un algo pour trouver un arctan, on en avait conclut l'algorithm de Padé, cependant j'aimerais juste relancer le sujet sur l'algorithme de Cordic.

    J'ai fais pas mal de recherche dessus j'ai l'impression que avec cette algo on peut calculer un atan :

    j'ai trouver ca :

    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
    I = 0;
    x = 4; // Coordonnée x initiale
    y = 4; // Coordonnée y initiale
    a = 0;
    d2 = 2; // Diviseur
    
    for(i=0; i<15; i++)
    {
       d2/= 2; // Multiple de 2-i
       dx=x*d2;
       dy=y*d2;
       da=atan(d2);
       da=180*da/PI; // Pour une valeur en degré
    
       if(y<0)
       {
            x -= dy;
            y += dx;
            a -= da;
       } 
       else
      {
            x += dy;
            y -= dx;
            a += da;   //La variable 'a' tend vers le résultat de l'arctan
      }
    }
    Je ne comprend pas déja pourquoi pour calculer un atan, dans l'algo il font appel a la fonction "atan" [da=atan(d2)]; (Si on fait un algo pour calculer cette fonction, ca suppose que l'on ne la possede pas).

    Deuxiement je travail sous matlab/simulink pour l'instant, exist-il une toolbox, ou un script déja fait réalisant l'algo de Cordic pour arctan.

    (le but final de mon application est sur un FPGA, et je suis amener a coder atan dans mon FPGA).

    Merci pour votre aide

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    As-tu regardé dans Wikipedia?
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 64
    Points : 35
    Points
    35
    Par défaut
    Oui, c'est meme la premiere chose que j'ai faite..

  4. #4
    Membre actif
    Inscrit en
    Décembre 2003
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 272
    Points : 284
    Points
    284
    Par défaut
    Tu n'as besoin des valeurs de l'arc tangente que pour certaines entrées (les 2^i), il te suffit donc d'une table pré-calculée.

    Sinon, j'aime bien ce lien là aussi.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 64
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    j'ai enfin utilisé l'algo Cordic pour calculer mon Acrtan, mais j'ai un probleme et je seche litéralement !!

    Je modelise mon modele sous simulink avant de l'implementer dans mon FPGA et j'utilise entre autre Synplify DSP qui integre une toolbox a simulink dont un bloc CORDIC qui fait ( arctan(y/x) ).



    Et quand je trace mes deux courbes qui me donne un angle, j'obtiens ceci :

    (Je précise j'ai bien vérifier plusieur fois, les entrées de mes blocs sont dans le bon ordre)
    Le resultat donnée par theta2 c'est a dire par le bloc 'atan' est lui bon, il correspond à ce que je suis censé trouver.

    Merci de votre aide, je n'arrive vraiment pas a résoudre ce problemme.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 64
    Points : 35
    Points
    35
    Par défaut
    J'ai aussi tester le Cordic pour une seule valeur :
    ex :

    Cordic(5/5)=Cordic(1)=0.121..
    Alors que atan(5/5) = atan(1) = 0.7853..

Discussions similaires

  1. L'algorithme AABB (pour les détecteurs de collision)
    Par Fandekasp dans le forum Mathématiques
    Réponses: 2
    Dernier message: 20/08/2007, 09h51
  2. algorithme difficile pour un debutant
    Par abdou karim diagne dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 26/03/2007, 00h18
  3. algorithme recursif pour remplir un carré en diagonal
    Par chelsea23 dans le forum Algorithmes et structures de données
    Réponses: 20
    Dernier message: 16/01/2007, 13h10
  4. Quel algorithme utilisé pour faire un arbre hiérarchique
    Par deaven dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 26/01/2005, 21h30
  5. Algorithmes génériques pour affichage de primitives 2D.
    Par Selenite dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 02/01/2005, 20h20

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