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 :

[double] Signification code [Débutant]


Sujet :

MATLAB

  1. #1
    Membre Expert Avatar de lecteur1001
    Inscrit en
    Mai 2009
    Messages
    1 526
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 1 526
    Par défaut [double] Signification code
    Bonjour à tous,

    Pouvez vous m'expliquer svp quelle est la signification de ce code ? A quoi sert-il en fait ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double(u~=0.0 && u~=1.0)
    sachant que u varie entre 0 et 1.
    En fait, je n'ai pas compris la notion de double précision. J'ai déjà entendu ce terme lorsque l'on fait la distinction entre un float et un double en langage C mais je ne vois pas le rapport ici.

    Merci de vos réponses
    À lire avant de poster : qu'est ce qu'un ECM (Exemple Complet Minimal) ?
    Règles des forums LaTeX. Quand votre problème est réglé, mettez votre discussion en
    Pour débuter en LaTeX je conseille fortement Tout ce que vous avez toujours voulu savoir sur LaTeX sans jamais oser le demander (merci Woody Allen ), livre téléchargeable gratuitement ou en vente dans le commerce pour 15 €

  2. #2
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Salut!

    double c'est une fonction qui permet d'utiliser la double precision .

    Donc float c'est sur 32 bits - precision simple

    Double c'est sur 64 bits - precision double

    >>help double


    A ton example il permet d'utiliser la double precision pour des valeurs differentes de 0 et 1 ou u c'est un array.

    Le symbole ~= c'est le symbole different (represente l'operateur different en matlab).

    Lis ici pour mieux comprendre:

    "Double precision":

    http://en.wikipedia.org/wiki/Double_...g-point_format

    "Single precision":

    http://en.wikipedia.org/wiki/Single_...g-point_format


    Donc double precision c'est:

    "more digits to the right of the decimal point"

    Amicalment,

    Michel

  3. #3
    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
    Sous cette forme :

    idx = u~=0.0 && u~=1.0

    cette commande renvoie une valeur logique 0 (faux) ou 1 (vrai) en fonction de la condition entre parenthèse. La classe de la variable serait logical

    En théorie, on ne peut pas faire d'opérations arithmétiques avec ce genre de classe.

    Sous MATLAB, il est théoriquement nécessaire de modifier la classe logical en classe double avec la fonction Double (la valeur de idx n'est pas modifiée lors de ce changement de classe).

    Je dis en théorie car MATLAB peut convertir lui même la classe si nécessaire :

    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
    >> u = .4
     
    u =
     
        0.4000
     
    >> idx = u~=0.0 && u~=1.0
     
    idx =
     
         1
     
    >> class(idx)
     
    ans =
     
    logical
     
    >> idx+1
     
    ans =
     
         2

  4. #4
    Membre Expert Avatar de lecteur1001
    Inscrit en
    Mai 2009
    Messages
    1 526
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 1 526
    Par défaut
    Si on a le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    u=0.4;
    idx = double (u~=0.0 && u~=1.0);
    cela renvoie la conversion en "double" de u s'il est différent de 0.0 et de 1.0 ?
    À lire avant de poster : qu'est ce qu'un ECM (Exemple Complet Minimal) ?
    Règles des forums LaTeX. Quand votre problème est réglé, mettez votre discussion en
    Pour débuter en LaTeX je conseille fortement Tout ce que vous avez toujours voulu savoir sur LaTeX sans jamais oser le demander (merci Woody Allen ), livre téléchargeable gratuitement ou en vente dans le commerce pour 15 €

  5. #5
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Citation Envoyé par lecteur1001 Voir le message
    Si on a le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    u=0.4;
    idx = double (u~=0.0 && u~=1.0);
    cela renvoie la conversion en "double" de u s'il est différent de 0.0 et de 1.0 ?
    Oui c'est ca.

  6. #6
    Membre Expert Avatar de lecteur1001
    Inscrit en
    Mai 2009
    Messages
    1 526
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 1 526
    Par défaut
    Citation Envoyé par mihaispr Voir le message
    Oui c'est ca.
    Non, ce n'est pas ça je pense : cela convertit simplement en double le test sur u.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    u=0.15;
    idx = double (u~=0.0 && u~=1.0)
    me renvoie "1" car u est effectivement différent de 0 et de 1. C'est juste que pour manipuler idx par la suite, il est préférable qu'il soit en "double" plutôt qu'en "logical".

    Merci à vous 2 !

    Edit : en fait, ce que je trouve "bizarre", c'est que dès que l'on affecte une valeur (un entier par exemple)à une variable, cette variable est automatiquement un double. Pourquoi Matlab fait-il cela ? Cela prend + de place en mémoire ! A moins que ce soit au cas où l'on change la valeur de cette variable plus loin et qu'on évite le problème de type ?
    À lire avant de poster : qu'est ce qu'un ECM (Exemple Complet Minimal) ?
    Règles des forums LaTeX. Quand votre problème est réglé, mettez votre discussion en
    Pour débuter en LaTeX je conseille fortement Tout ce que vous avez toujours voulu savoir sur LaTeX sans jamais oser le demander (merci Woody Allen ), livre téléchargeable gratuitement ou en vente dans le commerce pour 15 €

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

Discussions similaires

  1. signification code en C# à porter en C
    Par crashtib dans le forum C#
    Réponses: 4
    Dernier message: 19/05/2009, 17h12
  2. Signification code #IND
    Par mamatlecaribou dans le forum C
    Réponses: 13
    Dernier message: 24/05/2007, 17h41
  3. pb code double liste
    Par clairette dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/02/2006, 11h21
  4. Signification du code
    Par krfa1 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/09/2005, 11h45
  5. Signification de codes ASCII dans OnKeyPress
    Par e-ric dans le forum Langage
    Réponses: 5
    Dernier message: 19/08/2005, 10h33

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