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 :

Indexage,stockage,Assignment has more non-singleton rhs dimensions than non-singleton subscripts


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2016
    Messages : 26
    Par défaut Indexage,stockage,Assignment has more non-singleton rhs dimensions than non-singleton subscripts
    Bonjour

    Je veux stocker des valeurs d'une boucle, ci après un exemple de code pour m'expliquer :

    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
    a=[1 2 3]
    b=[4 5 7]
    D=[1:1:120]
    Dobjectif=[] %% facultatif je peux ne pas initialiser 
     
    n=length(a)
    m=length(b)
    for i=1:n
    for j=1:m
     
     
    [sortie]=function(D,a(i),b(j));
     
      a= find(sortie==0.403);
    Dobjectif(i,j)=D(a);
     
     
    end 
    end
    Pour la combinaison (a=1,b=4) je peux stocker ma première valeur D(a),par contre
    en incrémentant (a=1,b=5) j'ai ce message:
    Assignment has more non-singleton rhs dimensions than non-singleton subscripts
    c'est un problème de d'indexage lors du stockage ,quelqu'un pourrait m'aider ?


    Merci

  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
    Il y a plus d'éléments dans le terme de droite que d'indice dans le terme de gauche à la ligne où cette erreur survient.
    Voir la FAQ: Assignment has more non-singleton rhs dimensions than non-singleton subscripts.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >> a = [1 2 3];
    >> D = 1:1:120;
    >> D(1,1) = a([2 3])
    Renvoi :
    Assignment has more non-singleton rhs dimensions than non-singleton subscripts
    Es-tu sûr que la variable a reste toujours un scalaire ?

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2016
    Messages : 26
    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
    14
    15
    16
    17
    18
    19
    a=[1 2 3]
    b=[4 5 7]
    D=[1:1:120]
    Dobjectif=[] %% facultatif je peux ne pas initialiser 
     
    n=length(a)
    m=length(b)
    for i=1:n
    for j=1:m
     
     
    [sortie]=function(D,a(i),b(j));
     
      c= find(sortie==0.403);
    Dobjectif(i,j)=D(c);
     
     
    end 
    end
    En fait c'est une autre variable (erreur de frappe) Excusez moi ,pour l'instant oui la variable c est un scalaire

    Déroulement de l'exemple:

    Pour a=1,b=4

    Taille sortie=Taille D

    D=1*121
    sortie=1*121

    c=39
    D(c)=scalaire (0.0096)

    il va le stocker dans Dobjectif(i,j)=D(c);

    Pour a=1,b=5
    il ne trouve pas la valeur recherchée :c=[]==> affichage de l'erreur

    Merci Jerome

  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
    Tu peux tester si la variable est vide avec la fonction isempty :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    c = find(...);
     
    if isempty(c)
       %...
    else
       %...
    end
    Au passage, on ne test jamais l'égalité entre deux valeurs réelles : Pourquoi 0.3-0.2-0.1 est-il différent de 0 ?

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2016
    Messages : 26
    Par défaut
    Problem SOLVED
    Merci Jérôme BRIOT

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/03/2013, 13h52
  2. Réponses: 3
    Dernier message: 28/07/2010, 11h39
  3. Réponses: 3
    Dernier message: 21/02/2010, 19h09
  4. Réponses: 3
    Dernier message: 27/04/2008, 23h28
  5. Réponses: 6
    Dernier message: 24/06/2007, 21h11

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