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 :

utilisation fonction m_pcolor [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 utilisation fonction m_pcolor
    Bonjour a tous

    Je voudrais savoir si qqlqun peut m'aider sur l'utilisation de la fonction m_pcolor de la toolbox m_map de matlab?
    en fait lorsque j'utilise la fonction m_pcolor, il ne se passe rien, je n'ai pas de message d'erreur, j'ai bien la carte qui s'affiche, mais on dirait que matlab ne tient pas compte de ma ligne de commande avec m_pcolor car mes données ne s'affichent pas, la carte est blanche...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    h=m_pcolor(lon,lat,Z);
    m_proj('stereographic','latitude',-90,'long',-30,'radius',55,'rotangle',25);
    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
    m_pcolor(lon,lat,Z)  %longitude, latitude, profondeur
    shading flat
    c=colorbar; h=c;
    load colormapbicolor
    colormap(colormapbicolor)
    par contre si j'utilise la fonction m_plot, la j'ai un resultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    m_proj('stereographic','latitude',-90,'long',-30,'radius',55,'rotangle',25);
    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
    m_plot(lon,lat)  %longitude, latitude
    shading flat
    c=colorbar; h=c;
    load colormapbicolor
    colormap(colormapbicolor)

    mais je voudrais vraiment utilisier la fonction m_pcolor pour pouvoir tenir compte de la profondeur

    PS: dans mon code "lon" et "lat" et "Z" sont des vecteurs
    merci de votre aide

  2. #2
    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 PCOLR fonction
    Bonjour Bonjour

    Personne n'a de petite idée??
    comme je n'arrivais pas a faire fonctionner la fonction 'm_pcolor' je me suis tourné vers la fonction 'pcolor'
    mais la aussi j'ai un probleme..
    j'ai donc trois vecteurs: lon, lat et Z
    les trois ont la meme dimension
    je souhaiterais plotter lon et lat sur un plot et faire apparaitre en couleur la valeur de Z qui correspond a sa longitude et latitude
    mais matlab me renvois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Error using pcolor (line 54)
    Color data input must be a matrix.
    je pense d'apres ce que je vois sur le net et la documentation que ma variable Z doit etre une matrice.. mais je ne comprends pas: je ne veux pas une matrice mais bien une valeur!



    merci de votre aide

  3. #3
    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,

    Citation Envoyé par Potté75
    je souhaiterais plotter lon et lat sur un plot et faire apparaitre en couleur la valeur de Z qui correspond a sa longitude et latitude
    De ce que tu dis ici, si tu as par exemple 10 valeurs de latitude et 10 valeurs de longitude, tu as bien 10*10=100 valeurs de Z, soit une matrice 10 par 10.
    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!

  4. #4
    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
    Merci de ton interet pr mon soucis!
    NonNon: pour une valeur de latitude et de longitude, j'ai UNE valeur de profondeur Z
    Z est bien un vecteur, pas une matrice...
    Il faut que je le "convertisse" en matrice?

  5. #5
    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
    Tout dépend de ce que tu désires faire en réalité, je ne comprends pas vraiment. Si tu as pour un couple longitude latitude une valeur de Z, cela veut dire que ta "map" est presque remplie de trous. En effet si par exemple aux valeurs de latitude et de longitude (tout à fait arbitraire) de 10 et 10 tu as la valeur 15, alors quid de 10 et 9, quid de 10 et 11? etc etc.

    Imagine toi une feuille quadrillée de 10 par 10. 10 cases pour la longitude et 10 cases pour la latitude. Tu as donc 100 cases pour ta feuille puisque pour une latitude peut correspondre 10 longitudes différentes. Or, toi tu ne possèdes que 10 valeurs de Z, tu ne vas donc remplir que 10 cases de ton quadrillage... C'est la raison pour laquelle il te demande une matrice 10 par 10 en Z. Ensuite si tu veux transformer ton Z en matrice, ça s'appelle faire de l'interpolation, et je ne suis pas sûr que c'est ce que tu désires?

    Désolé pour les explications tout à fait maladroites, j'aurai eu plus de facilité à exposer mon point de vue avec une feuille et un stylo
    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!

  6. #6
    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, oui je conprends tout a fait ce que tu veux dire, il n'y a pas de soucis! Merci

    mais en tenant compte du fait que j'ai des MILLIERS de points Z, pour des milliers de latitude et de longitudes (qui elles ne varient pas bcp), je peux donc "remplir" ma carte comme tu le dis, n'est ce pas?

    c'est a dire que j'ai des milliers de points pour une petite zone geograpique

    Donc comment faire pour colorier le points géolocalisé en fonction de sa valeur Z/ de sa profondeur?

  7. #7
    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
    Je suppose que tu peux jeter un oeil à la fonction interp2 dans ce cas. (Cette fonction te servira à créer la matrice demandée )
    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!

  8. #8
    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 j'y vais de ce pas!
    Merciiii

  9. #9
    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
    Ahem, je me suis peut être un peu gouré

    A priori, c'est plutôt la fonction griddata qu'il faut utiliser.

    Je n'ai en réalité jamais eu besoin de ces fonctions, je n'avais pas appréhendé la subtilité!
    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!

  10. #10
    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, bon je bataille depuis 1h et je reviens finalement ici!

    je trouve pleins de choses intéressantes certes, mais je commence sérieusement à m'embrouiller!
    http://www.developpez.net/forums/d76...ddata-interp2/

    donc vous me conseillez d'utiliser la fonction griddata créer une grille et interpoler mes valeurs de Z
    je fais le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    gx=min(lon):max(lon);
    gy=min(lat):max(lat);
    [xm,ym]=meshgrid(gx,gy);
    a=griddata(lon,lat,Z,xm,ym);
    a=[xg,yg,zg];

    mais au moment de faire mon pcolor...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pcolor(lon,lat,a)
    ERROR using pcolor (line 57)
    Matrix dimensions must agree.



    je ne comprends plus rien: le but c'est que je crée une grille de la taille de LON x LAT , de créer une "nouvelle" matrice avec pleins de valeurs de Z (alors qu'a la base s'est un vecteur) et que Z soit ensuite interpolé sur cette grille, c'est bien ça?

    Merci de votre aide en tous les cas

  11. #11
    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
    Et comme ça?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    gx=min(lon):max(lon);
    gy=min(lat):max(lat);
    [xm,ym]=meshgrid(gx,gy);
    a=griddata(lon,lat,Z,xm,ym);
    <s>a=[xg,yg,zg];</s>
    pcolor(a);
    ou plutôt

    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!

  12. #12
    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 marche bien comme ca ouiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
    Merci Gooby !

    par contre...

    j'ai comme l'impression que cette interpolation avec griddata me donne des valeurs de Z (profondeur) un peu.. OUFFF !!
    j'ai des profondeurs beaucoup trop grandes... ce n'est pas tres réaliste..
    est ce que c'est la methode et la fonction en elle meme qui me donne ca, ou c'est une erreur dans mon script?
    dans tous les cas je vais le revoir

  13. #13
    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,

    Si tu consultes l'aide sur la fonction griddata tu peux constater qu'il existe différentes méthodes d'interpolation (sous Matlab 2013a: linear, cubic, natural, nearest, v4), tu peux éventuellement tester les autres méthodes d'interpolation afin de vérifier si il n'y en a pas une qui te donnerait des résultats plus cohérents.
    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!

  14. #14
    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 m_pcolor
    effectivement selon la methode c'est tres different
    je vais eplucher tout ca!

    du coup pour revenir a mon probleme de base, la fonction "m_pcolor" fonctionne egalement bien maintenant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    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');
    gx=min(lon):max(lon);
    gy=min(lat):max(lat);
    [xm,ym]=meshgrid(gx,gy);
    a=griddata(lon,lat,Z,xm,ym,'linear');
    m_pcolor(gx,gy,a)

    encore merci pour ton aide!

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

Discussions similaires

  1. Pb de blancs dans utilisation fonction FtpFindFirstFile
    Par AlvinTheMaker dans le forum MFC
    Réponses: 2
    Dernier message: 06/04/2005, 12h33
  2. Réponses: 6
    Dernier message: 24/02/2005, 09h44
  3. [GIMP] [Script-FU] Utilisation fonction gimp-curves-spline
    Par narmataru dans le forum Autres langages
    Réponses: 1
    Dernier message: 09/02/2005, 17h25
  4. [Débutant] Aide utilisation fonctions :(
    Par trakiss dans le forum Débuter
    Réponses: 10
    Dernier message: 27/08/2004, 15h59
  5. Utilisation fonction définie dans un .Dll
    Par jeab. dans le forum Windows
    Réponses: 5
    Dernier message: 23/03/2004, 16h23

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