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 :

comment faire une boucle


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2011
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 92
    Points : 2
    Points
    2
    Par défaut comment faire une boucle
    bonjour,voila ce que j'ai fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for k=1:49;
    dalta1(k)=(x(k))'*dalta(k)+(dalta(k))'*x(k)+(dalta(k))'*dalta(k);
    end;
    w1=inv([a-lamda*ones(7,7),-v;v',zeros(7,7)])*[-dalta1(1)*v;zeros(7,7)];
    w2=inv([a-lamda*ones(7,7),-v;v',zeros(7,7)])*[-dalta1(2)*v;zeros(7,7)];
    w3=inv([a-lamda*ones(7,7),-v;v',zeros(7,7)])*[-dalta1(3)*v;zeros(7,7)];
     
    daltav1=w1(1:7,:);daltalamda1=w1(8:14,:);
    daltav2=w2(1:7,:);daltalamda2=w2(8:14,:);
    daltav3=w3(1:7,:);daltalamda3=w3(8:14,:);
    comment les w1,w2,w3 ,dltav1,daltav2,daltav3 et les daltalamda je peux les métres dans une boucle?? par j'ai essayer essayer mais ça n'a pas fonctionner;et 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 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 : 53 166
    Points
    53 166
    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)

  3. #3
    Membre du Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Juillet 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Danemark

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2012
    Messages : 45
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par karika Voir le message
    bonjour,voila ce que j'ai fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for k=1:49;
    dalta1(k)=(x(k))'*dalta(k)+(dalta(k))'*x(k)+(dalta(k))'*dalta(k);
    end;
    w1=inv([a-lamda*ones(7,7),-v;v',zeros(7,7)])*[-dalta1(1)*v;zeros(7,7)];
    w2=inv([a-lamda*ones(7,7),-v;v',zeros(7,7)])*[-dalta1(2)*v;zeros(7,7)];
    w3=inv([a-lamda*ones(7,7),-v;v',zeros(7,7)])*[-dalta1(3)*v;zeros(7,7)];
     
    daltav1=w1(1:7,:);daltalamda1=w1(8:14,:);
    daltav2=w2(1:7,:);daltalamda2=w2(8:14,:);
    daltav3=w3(1:7,:);daltalamda3=w3(8:14,:);
    comment les w1,w2,w3 ,dltav1,daltav2,daltav3 et les daltalamda je peux les métres dans une boucle?? par j'ai essayer essayer mais ça n'a pas fonctionner;et merci .
    il faut que tous vos variables doivent etre dans la boucle
    if k=1:49
    ..........
    ......
    ........
    .........
    .........
    .........
    w1(k)=.......lamda(k)...........dalta(l)
    .........
    .........
    .........
    .........
    end

  4. #4
    Candidat au Club
    Inscrit en
    Mai 2011
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 92
    Points : 2
    Points
    2
    Par défaut
    merci beaucoup;j'ai un autre problème:

    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
    20
    21
    22
    23
    N=100;k=1:N;
    v1(k)=randn(1,100);
    v2(k)=randn(1,100);
    v3(k)=randn(1,100);
    %LES VARIABLES
    x1(k)=0.4*v1(k)+sin(k/N);
    x2(k)=v2(k)-2*cos(k/4);
    x3(k)=0.2*v3(k)-1;
    x4(k)=x1(k)+x2(k);
    x5(k)=x2(k)+x3(k);
    x6(k)=2*x1(k)+x3(k);
    x7(k)=x4(k)+x5(k);
    x=[x1' x2' x3' x4' x5' x6' x7'];
    %AJJOUT DES DEFAUTS
    x1(:,8:15)= x1(:,8:15)+3;
    x3(:,34:41)=x3(:,34:41)+3;
    x5(:,58:65)=x5(:,58:65)+3;
    dalta=0.01*(0.02*randn(100,1)-0.01);
    for k=1:100;
    X=x+dalta(k);
    A=X'*X;
    [v,a]=eig(A);
    end


    après l’exécution de ce programme,chaque valeurs propres auras 100 possibilités et chaque vecteurs propres aussi,comment je dois faire pour calculer le maximum et le minimum de chaque valeur et vecteurs propres;et merci

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    regarde les fonctions "min" et "max" de matlab:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [leMax sonIndice]=min(vecteurOuchercherMax)

  6. #6
    Candidat au Club
    Inscrit en
    Mai 2011
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 92
    Points : 2
    Points
    2
    Par défaut
    j'ai un peut modifier ce programme:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    N=100;k=1:1:N;
    v1(k)=rand(1,100);
    v2(k)=rand(1,100);
    v3(k)=rand(1,100);
    %LES VARIABLES
    x1=0.4*v1(k)+sin(k/N);
    x2=v2(k)-2*cos(k/4);
    x3=0.2*v3(k)-1;
    x4=x1+x2;
    x5=x2+x3;
    x6=2*x1+x3;
    x7=x4+x5;
    x=[x1' x2' x3' x4' x5' x6' x7'];
    %AJJOUT DES DEFAUTS
    x1(:,8:15)=x1(:,8:15)+3;
    x3(:,34:41)=x3(:,34:41)+3;
    x5(:,58:65)=x5(:,58:65)+3;
    %PLOTER LES VARIABLES
    subplot(711);plot(x1);axis([0 100 -4 4]);
    subplot(712);plot(x2);axis([0 100 -4 4]);
    subplot(713);plot(x3);axis([0 100 -4 4]);
    subplot(714);plot(x4);axis([0 100 -4 4]);
    subplot(715);plot(x5);axis([0 100 -4 4]);
    subplot(716);plot(x6);axis([0 100 -4 4]);
    subplot(717);plot(x7);axis([0 100 -4 4]);
    dalta=0.5*(2*rand(100,7)-1);
    a=x'*x;
    [v,c]=eig(a);
    %NOUVELLE MATRICE DE CORRELATION
    dalta1=x'*dalta+dalta'*x+dalta'*dalta;
    for k=1:1:49;
        A=c+dalta1(k);
        w=inv([a-c*ones(7,7) -v;v' zeros(7,7)])*[-dalta1(k)*v;zeros(7,7)];
    dalta4=w(1:7,:);dalta3=w(8:14,:);
       LAMDA=[(c+dalta3(k))]
       V=v+dalta4(k);
    e=max(LAMDA(7,7))
    e1=min(LAMDA(7,7))
    end
    le probléme c'est que le minumum et le maximum sont les mémes,malgré qu'il ya plusieurs valeurs de LAMDA(7,7)!!quel est la solution svp;mrc.

  7. #7
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour,

    LAMDA(7,7) est un unique réel, donc prendre le max et le min ne sert à rien (ce sera le chiffre lui même). Il faut surement passer à max() et min() un vecteur de taille > 1.

  8. #8
    Candidat au Club
    Inscrit en
    Mai 2011
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 92
    Points : 2
    Points
    2
    Par défaut
    j'ai généré plusieurs matrices de A,et j'ai calculé les valeurs et les vecteurs propres de chaque matrices,donc il ya plusieurs vecteurs de valeurs propres,je veux calculer un vecteur qui contient les valeurs maximum et un autre vecteur qui contient les valeurs minimum des valeurs propres,comment je fais?et merci.

  9. #9
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Il y a deux problèmes:
    1/ Tu calcules e et e1 à chaque itération de boucle, sans stocker les valeurs précédentes. Initialise un vecteur vide e=[]; et stocke y tes résultats au fur et à mesure: e(end+1)=max(LAMDA(7,7))

    2/ tu prends le max et le min d'un unique réel, donc tu aura toujours max=min

Discussions similaires

  1. [Smarty] comment faire une boucle
    Par wkd dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 19/08/2009, 13h36
  2. Réponses: 2
    Dernier message: 06/04/2007, 13h31
  3. [VBA-E] Comment faire une boucle lorsqu'il y a des cellules vides
    Par Annick.w dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 01/02/2007, 22h39
  4. [AJAX] Comment faire une boucle XMLHttpRequest qui marche ?
    Par lancelot_13 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/01/2007, 12h00
  5. Comment faire une boucle ???
    Par HookerSeven dans le forum Access
    Réponses: 6
    Dernier message: 17/06/2005, 12h58

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