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 :

Eliminer une boucle for. (Petit casse tete)


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut Eliminer une boucle for. (Petit casse tete)
    Salut,

    Petit casse tete a resoudre. Realiser le code ci dessous sans boucle for. Je cherche en vain mais trouve pas toujours des erreurs avec des nombres de lignes qui correspondent pas. Donc voici la boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Nm=1;
    for lc=1:Nb_R
       Ed_C(Nm:Nb_C+Nm-1,:)=Ed_Ctmp(:,:);
       Dra_C(Nm:Nb_C+Nm-1,:)=Dra_Ctmp(:,:);
       Or_C(Nm:Nb_C+Nm-1,:)=Or_Ctmp(:,:);
       Rc_C(Nm:Nb_C+Nm-1,:)=Rc_Ctmp(:,:);
       Nm=Nm+Nb_C;
    end
    Je sais pas si c'est possible, juste pour voir, moi j'abandonne.
    Bonne Chance Et Merci d'avance de vos recherches et reponses

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 143
    Par défaut
    il ne s'agit pas que de coller la meme matrice plusieurs fois dans une plus grande matrice? ca doit pouvoir se faire avec des operations par blocs. Maintenant jsais pas comment lui dire qu'il faut repeter la petite matrice NB_R fois dans la grande...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut
    je bloque la dessus aussi. on peut pas concatener des truc du style 1:1:Nb.
    Enfin je pense je sais pas justement.
    T'es suite ou en norvege si c'est pa indiscret.

  4. #4
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Ce serait mieux si tu nous donnais une idée de la taille de chaque matrice.
    Ou sur un petit exemple...
    Et peut-être les erreurs générées.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut
    25 colonnes et c'est fixe.
    Pour Nb_R et Nb_C, ils sont variables mais pour mes tests valent respectivement 31 et 37.
    La version avec la boucle for marche sans erreur, tous mes essais sans boucle se sont solder par une ereur de compile.
    A noter que cette boucle est deja a l'interieur d'une autre boucle voici le programme complet pour les interresser.
    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
    for l=1:Nb_C
       i=1;
       for c=1:5
          Ed_Ctmp(l,i:i+4)=TOC_C(l,1:4:17);
          Dra_Ctmp(l,i:i+4)=TOC_C(l,2:4:18);
          Or_Ctmp(l,i:i+4)=TOC_C(l,3:4:19);
          Rc_Ctmp(l,i:i+4)=TOC_C(l,4:4:20);
          i=i+5;		
       end
    end
    Nm=1;
    for lc=1:Nb_R
       Ed_C(Nm:Nb_C+Nm-1,:)=Ed_Ctmp(:,:);
       Dra_C(Nm:Nb_C+Nm-1,:)=Dra_Ctmp(:,:);
       Or_C(Nm:Nb_C+Nm-1,:)=Or_Ctmp(:,:);
       Rc_C(Nm:Nb_C+Nm-1,:)=Rc_Ctmp(:,:);
       Nm=Nm+Nb_C;
    end
    J'aimerais bien gagner du temps dans mon programme en eliminant cette boucle, si c'est possible.

  6. #6
    Membre émérite
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Nm=1;
    for lc=1:Nb_R
       Ed_C(Nm:Nb_C+Nm-1,:)=Ed_Ctmp(:,:);
       Dra_C(Nm:Nb_C+Nm-1,:)=Dra_Ctmp(:,:);
       Or_C(Nm:Nb_C+Nm-1,:)=Or_Ctmp(:,:);
       Rc_C(Nm:Nb_C+Nm-1,:)=Rc_Ctmp(:,:);
       Nm=Nm+Nb_C;
    end
    tu peux la remplacer par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Ed_C=kron(ones(1,Nb_R),Ed_Ctmp);
    Dra_C=kron(ones(1,Nb_R),Dra_Ctmp);
    ...
    ...

  7. #7
    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 zicos
    J'aimerais bien gagner du temps dans mon programme en eliminant cette boucle, si c'est possible.
    As-tu lu la FAQ à propos de la préallocation des matrices ?

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 143
    Par défaut
    jsuis a Bergen actuellement.

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

Discussions similaires

  1. Shell - Erreur dans une boucle for
    Par claralavraie dans le forum Linux
    Réponses: 4
    Dernier message: 11/01/2006, 13h45
  2. : remplir des zones de texte avec une boucle For
    Par Haro_GSD dans le forum Access
    Réponses: 3
    Dernier message: 20/09/2005, 21h23
  3. Problème avec une DLL dans une boucle For
    Par BraDim dans le forum Langage
    Réponses: 5
    Dernier message: 20/09/2005, 12h22
  4. [batch] incrémentation dans une boucle for
    Par bart64 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 08/09/2004, 20h05
  5. Réponses: 3
    Dernier message: 06/07/2004, 10h21

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