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 :

Typage volontaire d'une variable


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 2
    Par défaut Typage volontaire d'une variable
    Salut,

    voilà déjà quelques années que j'utilise Matlab et je ne me suis encore jamais posé cette question :

    comment faire pour typer volontairement une variable sous Matlab ?

    Si je fais
    mon x est bien de type entier. Cependant, si par la suite dans mon code je fais
    il repasse en double. J'aimerai simuler le comportement d'un algo codé sur des entiers, est-il possible de vérouiller le type de x une bonne fois pour toutes ?

    merci
    Romain

  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 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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >> x = int16(0);
    >> class(x)
     
    ans =
     
    int16
     
    >> x = 1;
    >> class(x)
     
    ans =
     
    double
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    >> x = int16(0);
    >> class(x)
     
    ans =
     
    int16
     
    >> x(1) = 1;
    >> class(x)
     
    ans =
     
    int16

  3. #3
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Il y a aussi le transtypage, à utiliser avec modération :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    >> doc cast
    >> doc class

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a = int8(5);
    b = cast(a,'uint8');
    Et bien sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >> a=uint8(8);
    >> b=cast(a, class(a))

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 2
    Par défaut
    Alors ça Dut c'est malin ! Et comment je pouvais le deviner ?

    kmaniche, mon souci était de ne pas modifier mon code en fait. Je sais que la solution de Dut m'oblige à mettre (1) partout... c'est pas mieux.

    Sinon, pensez-vous qu'on puisse bloquer le type ? Sinon je vais être obligé de le simuler en C mon algo...

  5. #5
    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 romain145 Voir le message
    Alors ça Dut c'est malin ! Et comment je pouvais le deviner ?
    MATLAB fait la conversion implicitement pour une variable scalaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >> x = int16(0);
    >> class(x)
     
    ans =
     
    int16
     
    >> x = 'str';
    >> class(x)
     
    ans =
     
    char
    Il faut que le terme de droite soit d'une classe différente Double (celle par défaut). Dans x = 1, 1 est de classe Double

    Par contre, le comportement est différent avec un tableau :

    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
    >> x = int16(0);
    >> class(x)
     
    ans =
     
    int16
     
    >> x(1) = inf;
    >> class(x)
     
    ans =
     
    int16
     
    >> x
     
    x =
     
      32767
    Je ne pense pas qu'il existe une autre solution...

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. [BES] Création d'une variable d'environnement
    Par NGI80 dans le forum Autres
    Réponses: 2
    Dernier message: 17/10/2002, 07h31
  3. Comparaison d'un registre 8 bits avec une variable 32 bits
    Par tupperware dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 15/10/2002, 10h25
  4. Désigner une variable avec une variable?
    Par littleman dans le forum Paradox
    Réponses: 4
    Dernier message: 12/08/2002, 11h21
  5. Réponses: 4
    Dernier message: 05/06/2002, 14h35

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