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 :

Quels sont les types de classes sous MATLAB à part int, uint et double?


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Quels sont les types de classes sous MATLAB à part int, uint et double?
    Bonjour,

    je travaille sur des images en niveaux de gris (256)


    comme spécifié dans le sujet, je chercher à savoir s'il existe un type de classe dans matlab équivalent à un float sous C ou fortran par exemple.


    les type uint et int ne permettent pas les opérations d'addition et de multiplication sur les matrices, en tout cas je n'y suis pas arrivé, et la classe double est vraiment lourde pour ce que je fais.


    merci de votre aide, à bientot!

  2. #2
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    Salut,

    La grande majorité des fonctions Matlab opèrent sur des doubles. Et je ne vois pas en quoi utiliser un double peux être lourd . Regarde plutôt du coté de la véctorisation si tu as des probleme de temps de calcul.


    ++

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Points : 968
    Points
    968
    Par défaut
    Pour un float, c'est le type single. Après, pour les entiers, tu as les int8, int16 et int32 (pareil pour les uint). Et je ne comprend pas ton problème avec les entiers, ca marche bien sur un exemple simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    m = ones(4,4,'uint32');
    m = m + 1
    Pour une image grise avec 256 tons, le uint8 est le plus adapté.

  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 304
    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 304
    Points : 52 882
    Points
    52 882
    Par défaut
    Quelle est ta version de MATLAB ?
    Utilises-tu l'Image Processing Toolbox ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    ma version de matlab est la 6.5 .

    quand j'ai tenté de faire mes opérations d'addition de matrices, le message d'erreur etait que + - / * n'étaient pas définis pour les uint8 ...

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    voici un exemple des messages d'erreurs que j'ai avec une execution sur des entiers, signés ou non:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Error using ==> -
    Function '-' is not defined for values of class 'int32'.

    Effectivement, mon soucis doit se situer plus dans ma vectorisation, mais j'ia préféré chercher des solutions simples...
    je sais ce qu'il me reste à faire maintenant, activation des neurones, mode analyse..

    merci à vous!

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 18
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par grohino Voir le message
    Bonjour,

    je travaille sur des images en niveaux de gris (256)


    comme spécifié dans le sujet, je chercher à savoir s'il existe un type de classe dans matlab équivalent à un float sous C ou fortran par exemple.


    les type uint et int ne permettent pas les opérations d'addition et de multiplication sur les matrices, en tout cas je n'y suis pas arrivé, et la classe double est vraiment lourde pour ce que je fais.


    merci de votre aide, à bientot!
    Salut a toi,

    Peut être peux tu regarder du coté de la commande deMatlab suivante :
    help class
    tu auras l'ensemble de type (ou class) disponible).
    Ramarque :
    Sinon, je confirme, utiliser des variables de type différents dans Matlab permet un gains d'espace mémoire. Il y a d'ailleurs sur le sujet une recommandation sur le site de Mathaworks.

    Hope this helps

    Cinza

  8. #8
    Membre averti

    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 352
    Points
    352
    Par défaut
    Citation Envoyé par grohino Voir le message
    ma version de matlab est la 6.5 .

    quand j'ai tenté de faire mes opérations d'addition de matrices, le message d'erreur etait que + - / * n'étaient pas définis pour les uint8 ...
    MATLAB 6.5 ne supporte que les operations en double precision. La majorite des operations sur d'autres types ne sont supportees qu'a partir de la version 7.0.

    Dans matlab 6.5 tu ne pourras donc qu'additionner des matrices en double precision par exemple.


    Salutations,

    Greg

  9. #9
    Membre averti

    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 352
    Points
    352
    Par défaut
    Citation Envoyé par mr_samurai Voir le message
    Salut,

    La grande majorité des fonctions Matlab opèrent sur des doubles. Et je ne vois pas en quoi utiliser un double peux être lourd . Regarde plutôt du coté de la véctorisation si tu as des probleme de temps de calcul.


    ++
    un double prend 64 bits alors qu'il n'a besoin que de 8 bits par valeur, ça fait une grosse différence quand on travaille avec de grandes images! Ceci dit comme mentionne matlab 6.5 ne travaille malheureusement qu'en double précision.

    Salutations,

    Gregoire

Discussions similaires

  1. Quels sont les outils de développement sous Linux ?
    Par Community Management dans le forum Linux
    Réponses: 120
    Dernier message: 11/10/2015, 11h17
  2. Réponses: 9
    Dernier message: 06/05/2015, 15h22
  3. [XHTML 1.0] quel sont les types de balises Meta utile?
    Par sarah_insat dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 26/11/2009, 21h25
  4. DATEPART, DateADD, DateDiff : quels sont les type de paramètres ?
    Par fredfloyd dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/09/2008, 21h58
  5. Réponses: 10
    Dernier message: 08/04/2007, 20h17

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