Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

probleme d'indexage de boucle for avec matlab



  1. #1
    RBM

    probleme d'indexage de boucle for avec matlab


    ------

    bonsoir,
    en essayant d'executer le script ci dessous j'obtiens le message:

    j'ai besoin d'aide si c'est possible (mon probleme c'est d'afficher la matrice h(k)
    merci

    Code :
    a=[1,2;2,3];
    c=[1,2];
    s=3;
    h=c;
    for k=1:s-1
    h(k)=c*(a^k)

    endobjectif :
    essayer d'avoir une matrice h(k)=(3ligne ,2 colonne)

    si j'ecrit h(k)=c*(a^k) j'obtient

    message d'erreurs:

    Citation:
    In an assignment A(I) = B, the number of elements in B and
    I must be the same.


    si j'ecrit h=c*(a^k) j'obtient chaque tout seule :


    Citation:
    h =

    1 2


    h =

    5 8


    h =

    21 34

    comment faire pour regroupes ces lignes separes dans une seule matrice h(k)
    merci de votre aide.

    -----

  2. #2
    pat7111

    Thumbs up Re : probleme d'indexage de boucle for avec matlab

    Citation Envoyé par RBM Voir le message
    comment faire pour regroupes ces lignes separes dans une seule matrice h(k)
    Par concatenation, comme lorsqu'on declare une matrice

    Cela donnerait

    Code:
    a=[1,2;2,3];
    c=[1,2];
    s=3;
    h=c;
    
    for k=1:s-1
    nouvelle_ligne_h=c*(a^k);
    h= [h; nouvelle_ligne_h];%Concatenation verticale avec ;
    end
    Dernière modification par pat7111 ; 22/10/2007 à 20h30.
    Plutôt appliquer son intelligence à des conneries que sa connerie à des choses intelligentes...

  3. #3
    pat7111

    Re : probleme d'indexage de boucle for avec matlab

    A propos, je n'ai pas percuté sur le coup mais ton histoire ressemble fort au critère de Kalman d'observabilité, non ? Si oui, tu vas un cran trop loin

    Deux remarques alors (la première est même valable si tu fais ça pour autre chose...)

    • Il est maladroit de calculer (idem et plus encore quand on le fait à la main) de calculer alors qu'on a sous la main

      Code:
      a=[1,2;2,3];
      c=[1,2];
      s=3;
      h=c;
      ancienneLigne = c;
      
      for k=1:s-1
      nouvelle_ligne_h=ancienneLigne *a;
      h= [h; nouvelle_ligne_h];%Concatenation verticale avec ;
      end
      Sur un "gros" exemple, c'est certainement plus rapide et surtout on a moins de risque d'erreurs d'arrondis selon la méthode employée par Matlab pour calculer . Vu qu'après on raisonne sur le rang de h, de petites erreurs d'arrondis peuvent changer drastiquement les conclusions.
    • Si tu as la "Control System Toolbox", la commande obsv(a, c) te donne directement h... (et ctrb(a, b) pour [b ab a^2b...] )
    Dernière modification par pat7111 ; 23/10/2007 à 03h36.
    Plutôt appliquer son intelligence à des conneries que sa connerie à des choses intelligentes...

Sur le même thème :

Discussions similaires

  1. fonction avec boucle for matlab
    Par bichou9 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 03/07/2007, 17h21
  2. probleme avec MATLAB
    Par ABN84 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 23/05/2007, 21h34
  3. Optimisation boucle Matlab.
    Par blanka808 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 13/04/2007, 12h50
  4. MATLAB-pb d'initialisation de boucle
    Par hameer dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 20/07/2005, 16h08
  5. sortir d'une boucle en matlab
    Par veligère dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 06/10/2004, 15h04
Découvrez nos comparatifs produits sur l'informatique et les technologies.