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 de "surf" après griddata3


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 34
    Points : 32
    Points
    32
    Par défaut Utilisation de "surf" après griddata3
    Bonjour à tous,

    Je viens de créer un petit programme permettant de déterminer l'intégrale (en utilisant la méthode des trapèzes et après avoir crée un maillage 3D régulier à partir d'un fichier texte (x,y,z,E)) d'une fonction E(x,y,z) par rapport à la variable "y" seulement. Le résultat est une fonction E_TF(x,z) que je n'arrive malheureusement pas à visualiser en utilisant la fonction surf (je souhaiterais en effet obtenir une carte 2D donnant la valeur de E_TF dans le plan (x-z) par une échelle de couleur). La dernière partie du programme (en gras) est la partie "visualisation" de cette fonction qui ne marche pas et je pense que cela est dû à une mauvaise utilisation des matrices qui stockent les données crées après l'utilisation de griddata3...

    Quelqu'un peut t-il me dire comment modifier la dernière partie de ce programme (en gras) pour pouvoir visualiser E_TF(X,Z) ?

    Voici en détail le code commenté que j'ai écrit :

    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
    %%LECTURE DES DONNEES
    load text.txt % Le fichier text (voir pièce-jointe)
    x=text(:,1); % x : extrait la première colonne de text.txt
    y=text(:,2); % y : ----------seconde------------                      
    z=text(:,3); % z  : ----------troisième-----------
    E=text(:,4); % E : -----------quatrième---------
    
    %%CREATION DU MAILLAGE 3D ET INTERPOLATION
    xlin=linspace(min(x),max(x),5); % 5 points régulièrement espacés / x
    ylin=linspace(min(y),max(y),5); % ------------------------------/y
    zlin=linspace(min(z),max(z),5); %------------------------------/z
    [X,Y,Z]=meshgrid(xlin,ylin,zlin); % maillage 3D régulier et mise en forme 
    EE=griddata3(x,y,z,E,X,Y,Z); % Interpolation (linéaire) des données sur le %nouveau maillage 3D régulier
    
    %%INTEGRATION SUIVANT y
    delta=ylin(2)-ylin(1); % donne l'écart entre les points sur l'axe y
    E_TF=delta*trapz(EE); % Intégration par la méthode des trapèzes /y
    
    %%VISUALISATION DE E_TF(x,z) EN UTILISANT SURF(*,*,*)
    surf(X(1,:,1),Z(1,:,1),E_TF) %% NE MARCHE PAS
    pcolor(X(1,:,1),Z(1,:,1),E_TF);
    set(get(gca,'Children'), 'EdgeColor', 'none')
    colorbar
    Merci pour votre aide !!
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    surfc(xlin,zlin,squeeze(E_TF)) 
    hold on
    pcolor(xlin,zlin,squeeze(E_TF));
    set(get(gca,'Children'), 'EdgeColor', 'none')
    colorbar
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    Merci Magelan pour cette super réponse ! Je ne connaissais pas cette fonction squeeze. Cependant j'ai dû modifier un peu l'ordre des arguments dans cette fonction (par rapport à ce que tu proposais).
    Finalement pour visualiser E_TF(x,z) dans le plan (x-z), j'ai dû écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    surf(zlin,xlin,squeeze(E_TF)) 
    hold on
    pcolor(zlin,xlin,squeeze(E_TF));
    set(get(gca,'Children'), 'EdgeColor', 'none')
    colorbar
    C'est-à-dire passer zlin en premier argument et xlin en second argument dans les fonctions surf et pcolor.

    Merci aussi d'avoir ajouté les balises de code ! C'est plus propre !!

    Casimir

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/11/2006, 18h00

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