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 :

assignment dimension mismatch


Sujet :

MATLAB

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Points : 44
    Points
    44
    Par défaut assignment dimension mismatch
    Bonsoir,
    Je suis en train d'écrire ce bout de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for i=1:ll
        SmD(1,i)=sum(Ho(:,i));
     
        fg1=[];
        for ml=1:4
            fg1=[fg1 yg(i,ml)];
        end
     
        SmD(2,i)=fg1
    end;
    mais j'obtiens cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ??? Subscripted assignment dimension mismatch.
     
    Error in ==> FS at 57
    SmD(2,i)=fg1
    y a-il qui peut m'aider à corriger ce code??

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fg1=[];
    for ml=1:4
        fg1=[fg1 yg(i,ml)];
    end
    peut se simplifier en
    voire fg1 = yg(i,:); si size(yg,2) = 4.
    Ainsi fg1 est un vecteur de 4 valeurs qui ne peut donc pas être mis à la place d'une seule SmD(2,i).
    Que souhaites-tu faire avec cette dernière ligne ?

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Points : 44
    Points
    44
    Par défaut
    Oui c’est vrai, fg1 est un vecteur de 4 valeurs (c’est un nombre sur 4 chiffres, exemple : 2100, 0036,...).
    La première ligne de SmD correspondant à une distance calculée, la 2 ieme ligne du SmD correspond à la classe correspondante cad la valeur du fg1.
    Donc, comment je dois faire pour remplir la 2ieme ligne de SmD avec la valeur de fg1 qui représente la classe correspondante à la distance rempli dans la 1iere ligne??

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par slaima15 Voir le message
    c’est un nombre sur 4 chiffres, exemple : 2100, 0036,...).
    Ou plutôt [2 1 0 0], [0 0 3 6] et tu souhaites mettre donc 2100 et (00)36 dans tes SmD(2,i) non ?

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Points : 44
    Points
    44
    Par défaut
    Oui exactement. comment je peux faire ça ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SmD(2,i) = fg1 * 10.^(3:-1:0).';

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Points : 44
    Points
    44
    Par défaut
    Je n'est pas compris cette conversion:

  8. #8
    Invité
    Invité(e)
    Par défaut
    Décompose la ligne pour mieux comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >> 3:-1:0
    >> (3:-1:0).'
    >> 10.^(3:-1:0).'
    >> fg1 * 10.^(3:-1:0).'

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Points : 44
    Points
    44
    Par défaut
    En prenant des exemples ce ne marche pas exp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >> 
    fg1=yg(50,:)
     
    fg1 =
     
    0009
     
    >> fg1 * 10.^(3:-1:0).'
     
    ans =
     
           53337
    Or le résultat voulu de fg1 * 10.^(3:-1:0).' c'est 9.
    J'ai pas compris d'ou l'erreur.

  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 302
    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 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Que contient la variable yg ?
    Une chaine de caractères à n'en pas douter...

    Que renvoie la commande suivante ?

    Que représente la variable SmD ?
    Que vas-tu faire avec ensuite ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  11. #11
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Points : 44
    Points
    44
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    whos yg
      Name        Size            Bytes  Class    Attributes
     
      yg        278x4              2224  char

    SmD c'est un tableaux à deux lignes:
    La première ligne de SmD correspondant à une distance calculée, la 2 ieme ligne du SmD correspond à la classe correspondante cad la valeur du fg1.
    Donc, comment je dois faire pour remplir la 2ieme ligne de SmD avec la valeur de fg1 qui représente la classe correspondante à la distance rempli dans la 1iere ligne??

  12. #12
    Invité
    Invité(e)
    Par défaut
    yg et donc fg1 contient des caractères et non des valeurs numériques comme tu l'as affirmé.

    Tu ne peux pas mélanger deux types de variables au sein d'une seule.
    Et je te le répète : ce n'est pas une valeurun char, mais 4 que tu as dans fg1
    Citation Envoyé par Dut Voir le message
    Que vas-tu faire avec ensuite ?

  13. #13
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Points : 44
    Points
    44
    Par défaut
    Donc, comment je doit faire??
    est ce que je peux convertir fg1 comme des valeurs numériques??

Discussions similaires

  1. [Débutant] Subscripted assignment dimension mismatch
    Par Youni92 dans le forum MATLAB
    Réponses: 4
    Dernier message: 19/05/2010, 10h05
  2. problème avec"assignment dimension mismatch"
    Par george216 dans le forum MATLAB
    Réponses: 1
    Dernier message: 12/04/2010, 18h24
  3. erreur "Subscripted assignment dimension mismatch.
    Par lena_87 dans le forum MATLAB
    Réponses: 1
    Dernier message: 21/04/2009, 22h13
  4. Réponses: 4
    Dernier message: 28/04/2008, 18h06
  5. Réponses: 8
    Dernier message: 27/04/2007, 19h57

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