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++ Discussion :

conversion d'un code matlab à un autre en C


Sujet :

C++

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations forums :
    Inscription : Janvier 2013
    Messages : 48
    Par défaut conversion d'un code matlab à un autre en C
    Bonjour,
    J'avais un code en matlab , j'ai le converti en c++ en utilisant matlab coder

    mais lorsque j'ai exécuté le programme , j'ai trouvé qu'il ne me donne pas la même résultat que lorsque je l’exécute en matlab

    est ce que j'ai ce problème parce que j'ai changé le type des variables ?

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    MatLab fais du calcul formel, donc théoriquement sans erreur numérique.

    Les langages de programmation "classique" font les opérations au fur et a mesure, accumulant les erreurs de représentation des nombres flottants.

    Le symptôme est que 1.0 est différent de 10.0 - 0.9.
    Je t'encourage à lire un peu d'informations à ce sujet (wikipedia nombre flottant, par exemple)

    Dans l'essence, tout calcul en nombre flottant (float ou double) est imprécis.
    Ce problème n'est pas présent avec les entiers, mais eux souffrent de la limite des valeurs représentables.

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations forums :
    Inscription : Janvier 2013
    Messages : 48
    Par défaut
    Alors le problème est lié au type des variables ,
    comment spécifie le bon type des variables?

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Citation Envoyé par leternel Voir le message
    MatLab fais du calcul formel, donc théoriquement sans erreur numérique.
    Ah bon ! Première nouvelle.

    Il existe bien une extension pour faire du calcul formel (Symbolic Math Toolbox), mais MATLAB est initialement conçu pour du calcul numérique.

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    C'est ce qu'on m'avais expliquer, mais apparemment, ce n'est pas le cas. Je m'en souviendrai…
    Merci pour l'information.

    Pour le type de variable, c'est une question de bon sens.
    Il s'agit de rester en entier aussi longtemps que possible, et de ne faire les calculs en virgule flottante que lorsque la précision absolue n'est plus strictement nécessaire, ou que les entiers deviennent clairement inutilisables.

    Par exemple, pour la manipulation de prix en euros, on utilisera des centimes ou des millimes, en nombre entiers.

    une baguette coutera 87 centimes, plutot que 0.8700000047683716 (pour un double. Pour un float, ce serait pire encore)

Discussions similaires

  1. Conversion d'un code matlab en code C
    Par Fighters03 dans le forum MATLAB
    Réponses: 0
    Dernier message: 23/05/2014, 23h57
  2. Conversion de code MATLAB en Qt
    Par latifah dans le forum Débuter
    Réponses: 8
    Dernier message: 15/05/2012, 02h31
  3. Conversion d'un code MATLAB en C
    Par jmour dans le forum Débuter
    Réponses: 5
    Dernier message: 04/02/2012, 01h05
  4. [Débutant] Conversion code MATLAB en code Python 2.6
    Par frisou65 dans le forum MATLAB
    Réponses: 1
    Dernier message: 28/09/2011, 19h52
  5. Conversion d'un code Matlab .m en code Cpp
    Par MDiabolo dans le forum C++
    Réponses: 5
    Dernier message: 10/03/2010, 13h04

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