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 :

Error missing mrdivide -Matrix dimensions must agree et signification du .


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut Error missing mrdivide -Matrix dimensions must agree et signification du .
    Bonsoir.

    J’ai quelques soucis :
    1-J’écris ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Y=1/(2*(3+x)) avec % x=[1 :50]
    et voila le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error missing mrdivide -Matrix dimensions must agree
    ?

    2-Quelle est la signification du point dans: ?

    Merci.

  2. #2
    Membre Expert
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Par défaut
    Tu dois faire:
    Le .* implique une multiplication memebre à membre:
    Arithmetic Operators + - * / \ ^ '

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 49
    Par défaut
    le . est necessaire pour des raisons de type d'ensemble (reel, logique, ...) lorsque tes 2 variables st de types differentes ...

  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 j_ere_my Voir le message
    le . est necessaire pour des raisons de type d'ensemble (reel, logique, ...) lorsque tes 2 variables st de types differentes ...
    Tu pourrais préciser avec un exemple ?
    Je ne vois pas de quoi tu parles... peut être des Structure ?

  5. #5
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Citation Envoyé par tug83 Voir le message
    Tu dois faire:
    Le .* implique une multiplication memebre à membre:
    Arithmetic Operators + - * / \ ^ '
    Mais pour quelle raison le "point" est obligatoire pour la divsion alors qu'il ne l'est pas pour les autres operations("Dans ce cas")!!
    ?

  6. #6
    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
    Parce que x est un vecteur et 1 un scalaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >> 1/[1 2 3]
    ??? Error using ==> mrdivide
    Matrix dimensions must agree.
     
    >> 1./[1 2 3]
     
    ans =
     
        1.0000    0.5000    0.3333
    C'est un problème de dimension entre les variables

  7. #7
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Citation Envoyé par Dut Voir le message
    Parce que x est un vecteur et 1 un scalaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >> 1/[1 2 3]
    ??? Error using ==> mrdivide
    Matrix dimensions must agree.
     
    >> 1./[1 2 3]
     
    ans =
     
        1.0000    0.5000    0.3333
    C'est un problème de dimension entre les variables
    Justement c'est pour cela que je me demande pourquoi l'on ne fait pas
    y=1./(2.*(3.+x))?

  8. #8
    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 documentation
    The period character (.) distinguishes the array operations from the matrix operations. However, since the matrix and array operations are the same for addition and subtraction, the character pairs .+ and .- are not used.
    Donc tout dépend de savoir si tu considères tes vecteurs comme des matrices (mathématiques) ou comme des tableaux (informatique).

    Mais je laisse le soin à Jean-Marc de poursuivre les explications... c'est son dada ici

    Attendons qu'il se connecte

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 49
    Par défaut
    En fait, c'est pour des raisons plus simples que j'ai exposé précédemment.

    si x est integer
    si y est integer

    x/y sera du type integer. Autrement dit la division effectuée sera une division entière, et le résultat sera 0. Pour calculer effectivement deux tiers en réel, écrire : 2./3, 2/3. ou 2./3.

  10. #10
    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
    >> a = uint8(2);
    >> b = uint8(3);
    >> a/b
     
    ans =
     
        1
     
    >> a./b
     
    ans =
     
        1
    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
    >> c = 2
     
    c =
     
         2
     
    >> d = 3
     
    d =
     
         3
     
    >> c/d
     
    ans =
     
        0.6667
     
    >> c./d
     
    ans =
     
        0.6667

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 49
    Par défaut
    bon en tout cas, je sais que c'est comme ca en fortran lol

    si tu fais une division de deux entiers, donnant un réel, il faut mettre le point

  12. #12
    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 j_ere_my Voir le message
    bon en tout cas, je sais que c'est comme ca en fortran lol
    OK mais ici on essaye de répondre à des questions MATLAB... et même si MATLAB était initialement écris en Fortran, il n'en a gardé que quelques similitudes très légères (pour cause de réécriture en C) et celle la n'en fait pas partie

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 123
    Par défaut
    En Matlab ce n'est pas le cas, et heureusement.
    Le typage est automatique, aucune obligation de déclarer ses variables, et conservation du type le plus "compliqué" dans une opération.

    De plus : 2./3 en Matlab signifie utilisation de l'opérateur "./" aux chiffres 2 et 3, l'opérateur ./ étant l'opérateur / appliqué membre à membre. On note l'existence de .^, .*, ./, ...

    En fortran 2./3 signifie application de l'opérateur / aux chiffres 2. (real*4) et 3. L'opérateur ne change pas par l'ajout d'un point, mais le chiffre change de type.

    Attention aux confusions entre langages !

  14. #14
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Bonsoir.
    Merci de votre investissement,ça devrait être ok.

Discussions similaires

  1. Error using .* Inner matrix dimensions must agree.
    Par scorpzak25 dans le forum MATLAB
    Réponses: 1
    Dernier message: 20/09/2013, 07h35
  2. [Débutant] Error using ==> max Matrix dimensions must agree.
    Par ryma* dans le forum MATLAB
    Réponses: 3
    Dernier message: 09/02/2011, 09h18
  3. Matrix dimensions must agree.
    Par naim2009 dans le forum MATLAB
    Réponses: 1
    Dernier message: 28/08/2009, 12h12
  4. matrix dimension must agree
    Par naim2009 dans le forum MATLAB
    Réponses: 6
    Dernier message: 21/06/2009, 21h14
  5. Matrix dimensions must agree.
    Par naim2009 dans le forum Images
    Réponses: 1
    Dernier message: 23/01/2009, 22h16

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