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 :

problème de dimensions avec une matrice [Débutant]


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    29
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 29
    Points : 16
    Points
    16
    Par défaut problème de dimensions avec une matrice
    Bonjour j'ai un problème de dimension apparemment mais je ne comprends pas vraiment où. Voici mon bout de programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for k=1:200
          [pks loc]= findpeaks(y,'sort', 'descend');            
          pic = 10.^(pks(1:4)/10); 
          G(k)=(pic'*(loc(1:4)))/(sum(pic));                    
      end
    Où y est une fonction dépendant de k. La compilation coince avec G(k). Il me met une erreur "In an assignment A(I) = B, the number of elements in B and
    I must be the same." .

    Or tout ce que je veux faire, c'est faire courir mon équation "(pic'*(loc(1:4)))/(sum(pic))" suivant tous les k... Je vois bien qu'il y a un problème d'indexage. J'ai bien regardé votre aide dans la FAQ consacrée aux erreurs et sur les sujet d'indexage de matrice, mais je ne vois pas comment résoudre mon problème.

    Par exemple, même quand j'écris "pic(k) = 10.^(pks(1:4)/10);" il me met aussi un problème d'indexage...

    merci de votre aide

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Le problème vient du fait que tu essayes d'affecter dans un scalaire (un tableau de dimension 1x1) une variable à priori de dimension 4 Une façon de résoudre le problème peut être d'utiliser un tableau de cellules:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    G{k} = (pic'*(loc(1:4)))/(sum(pic));
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Le problème (que tu as du voir dans la FAQ) est que (pic'*(loc(1:4)))/(sum(pic)) est une matrice 4x4, mais que G(k) ne peut stocker qu'une seule valeur.
    Donc que veux-tu faire?
    Tu parles de y étant une fonction dépendant de k, or tu ne l'utilises pas en tant que tel. Ta boucle ne sers à rien ici car le résultat sera toujours le même.

  4. #4
    Membre à l'essai
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    29
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Merci de votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de translation avec une matrice
    Par ChPr dans le forum Android
    Réponses: 2
    Dernier message: 23/01/2013, 22h15
  2. Problème avec une matrice dans une boucle
    Par kingofdarck dans le forum MATLAB
    Réponses: 9
    Dernier message: 08/10/2012, 13h11
  3. Problème avec une matrice de liste.
    Par Gaara28 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 01/12/2009, 13h17
  4. [JTable] remplir avec une matrice
    Par ybdz dans le forum Composants
    Réponses: 3
    Dernier message: 08/12/2004, 21h03

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