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 :

plusieurs boucles dont l'une integrant subplot [Débutant]


Sujet :

MATLAB

  1. #1
    Membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Australie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 74
    Points : 42
    Points
    42
    Par défaut plusieurs boucles dont l'une integrant subplot
    BonjourBonjour!

    Je vous ecris pour un petit soucis concernant deux boucles et une avec subplot.
    en fait je voudrais afficher 12 plots (1 par mois)
    bon je peux le faire "manuellement" mais c'est pas très glamour et sa rend mon script tres lourd
    je pense qu'il est possible de faire des boucles mais après plusieurs tests rien ne fonctionne!

    donc j'ai un critère de base: le mois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mois=str2num(datestr(DATEVRAC,5));
    id=find(mois==1);   %1=janvier, 2=fevrier.....
    et je voudrais afficher un plot de ma commande, par mois.
    il faut donc deux boucles: une pour avancer le mois (faire un +1 sur id) et une boucle pour afficher a chaque fois un subplot
    et j'ai un peu de mal dans l'organisation...
    je tente avec ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    i0=id;
    for k = 1:12
        subplot(2, 6, k)
    	for i0:(id+1)
    		MA MEGA COMMANDE
    	end
    end

    mais sans succes...
    Pourrize vous me donner un coup de pouce s'il vous plait?
    Merci a vous
    Bonne journée

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour,

    Je n'ai pas compris à quoi sert ta boucle sur io, peux tu expliquer?
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  3. #3
    Membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Australie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 74
    Points : 42
    Points
    42
    Par défaut
    Hello!

    ma boucle sur i0 sert a faire avancer de "un mois" a chaque tour de boucle: je pars de janvier et je veux un plot pour janvier, un plot pour fevrier...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    id=find(mois==1);   %1=janvier, 2=fevrier.....
    i0=id;
    	for i0:(id+1)
    		MA MEGA COMMANDE
    end

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    dans ce cas c'est la même boucle que celle pour k?
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  5. #5
    Membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Australie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 74
    Points : 42
    Points
    42
    Par défaut
    Hum..
    je pensais qu'il fallait UNE boucle pour i0 (faire +1mois a chaque tour) ET UNE boucle pour k, qui m'ajoute un plot a chaque tour de boucle...

    in fine je voudrais une page graphique de matlab avec 12 petites cartes.. donc un plot par mois
    je ne veux pas faire apparaitre une carte pour janvier, la supprimer et faire aparaitre la carte pour fevrier...
    je veux un graph avec les 12 mois... est-ce plus clair?
    dans ce cas la, il ne faut pas deux boucles??

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Non, une boucle suffit.

    avant de pouvoir te répondre, j'aimerai savoir ce que contiens ta variable mois et quelle est cette super commande?
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  7. #7
    Membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Australie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 74
    Points : 42
    Points
    42
    Par défaut
    ok!
    alors la variable "mois" est construite comme dans le 1er post de la discussion...
    j'utilise la fonction "datestr" sur DATEVRAC qui est un vecteur de 200000 lignes
    et donc ca convertie les dates de DATEVRAC en chiffres représentant le mois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    mois(1:10)
    ans =
     
         2
         4
         4
         4
         5
         5
         5
         5
         5
         7

    donc la première ligne, c'est un mois de février, la seconde c'est un mois d'avril ....

    ensuite je sélectionne par exemple tous les mois de janvier
    et je fais tourner la "méga" commande et a la fin de cette commande j'obtiens une carte pour les mois de janvier (par exemple, ou fevrier si je mets mois==2)...
    La méga commande n'a rien de spéciale, c'est juste qu'elle est longue ^^
    c'est un m_pcolor sur lequel tu m'avais déjà aidé la semaine derniere Gooby!

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    En fait je ne comprends pas bien, quelle est ta "variable d'entrée" de ta super commande? Je pense qu'une seule boucle suffit mais sans savoir ce que tu veux faire une fois que tu as repéré où se trouve le mois de Janvier (par exemple), je ne puis en être sûr.

    Qu'est-ce que tu essayes de faire en faisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    id=find(mois==1)
    i0=id;
    	for i0:(id+1)
    i0 contient un vecteur, de même que id (puisqu'id = i0).
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  9. #9
    Membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Australie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 74
    Points : 42
    Points
    42
    Par défaut
    ca donne ca:

    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
    mois=str2num(datestr(DATEVRAC,5));
    id=find(month==1);
    lon=LONGITUDE(id); %LONGITUDE est un vecteur
    lat=LATITUDE(id);      %LATITUDE est un vecteur
    Z=PROF(id);               %PROF est un vecteur
    warning off
    m_proj('stereographic','latitude',-90,'long',-30,'radius',55,'rotangle',25);
    [X,Y]=m_ll2xy(lon,lat);
    m_coast('patch',[0.3 0.3 0.3],'edgecolor',[0.3 0.3 0.3]);
    m_grid('box','fancy','tickdir','out','xtick',7, 'yticklabel',[ ],'linestyle','none','fontsize',16,'XaxisLocation','top');
    hold on
    gx=min(lon):max(lon);
    gy=min(lat):max(lat);
    [xm,ym]=meshgrid(gx,gy);
    ZI=griddata(lon,lat,Z,xm,ym);
    m_pcolor(gx,gy,ZI);
    shading interp
    c=colorbar;load colormapbicolor; colormap(colormapbicolor);
    set(c,'Position',[0.9 0.2583 0.0446 0.4167]);
    Voila grosso-modo la commande. Donc a la fin j'obtiens une carte.
    et je voudrais mettre tout ca dans une boucle ou i0 augmente de 1 a chaque tour pour finir a 12: de cette facon on aura une carte par mois...
    et en meme temps un sublot de type
    pour afficher les 12 cartes

  10. #10
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Etant donné que tu as déjà une boucle k allant de 1 à 12, pourquoi refaire une boucle qui elle aussi parcourra 1 à 12?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for k = 1:12
        subplot(2, 6, k)
        idx_temp = find(mois==k)
        lon = LONGITUDE(idx_temp);
        lat = LATTITUDE(idx_temp);
        %la suite du code...
        clear idx_temp
    end
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  11. #11
    Membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Australie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 74
    Points : 42
    Points
    42
    Par défaut RESOLU
    ROOOH si tu voyais la beauté de mes 12 cartes sous les yeux!!
    Merveilleux! Merci

    Oui je ne sais pas pourquoi, je réfléchis pas encore en langage matlab.. Pour moi il fallait absolument deux boucles..
    mais en voyant tes lignes de codes, c'est vrai que c'est très clair
    Merci une fois de plus

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

Discussions similaires

  1. parcourir une boucle dont la variable est une date
    Par coquero dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 30/08/2011, 11h39
  2. Tracé plusieurs courbes à partir d'une boucle
    Par jal13 dans le forum MATLAB
    Réponses: 2
    Dernier message: 06/02/2010, 17h35
  3. [MySQL] exploiter resultat d une requête dans un plusieurs boucles
    Par jano_dave dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 08/10/2009, 16h35
  4. ActionScript 2 Manipuler plusieurs clips créés avec une boucle for
    Par adinx dans le forum ActionScript 1 & ActionScript 2
    Réponses: 7
    Dernier message: 09/04/2008, 15h01
  5. Réponses: 1
    Dernier message: 22/01/2007, 20h33

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