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 :

Création volume océanographie


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Création volume océanographie
    Bonjour,
    Je cherche à plotter un volume d'eau avec Matlab. Ma première idée est d'utiliser isosurface(x,y,z,v, isovalue) sauf qu'à la place d'avoir une seule valeur "isovalue" j'aimerai que matlab plot toutes les valeurs supérieur à un certain seuil. Connaitriez vous une commande pour faire celà?

    Sinon, avez-vous d'autres idées??

    Merci d'avance!
    Thibault

  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,

    il te suffit de faire une isosurface pour chaque isolaveur, non?

    Sinon, tu peux aussi regarder la fonction slice. Pour les autres méthodes, tout dépend de ce que tu veux visualiser (tu peux regarder la-dedans : 3-D Visualization)
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    et une fois que j'aurais fait une isosurface pour chaque valeur, pourrais-je les fusionner?

  4. #4
    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
    Qu'entends-tu par "les fusionner"?
    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.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Mon but est de modéliser un "volume" (un espece de "blob") qui correspond à une eau dont la salinité est supérieur à x (donc entre x et l'infini). Si je passe par isosurface, j'aurai seulement les points d'une valeur de salinité, si je les fait toutes (ce qui va me prendre du temps mais c'est pas trop grave), il faudra que je les fusionnent. N'y a t'il pas une fonction qui fasse comme isosurface mais en lieu et place d'une isovalue, j'aurais une valeur min???

  6. #6
    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
    Désolé mais je n'a pas bien compris ce que tu cherches à visualiser... Aurais-tu une image qui ressemble à ce que tu souhaites?

    Tu parles de volume, tu veux faire du rendu volumique? avec des effets de transparences? tu veux visualiser une surface?
    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.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Je cherche à créer un volume d'eau, une veine d'eau. Typiquement, quelque chose du genre de la figure 1 (sans les cones et les lignes).

    http://www.control.isy.liu.se/studen...4/example.html

  8. #8
    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
    Ok, sur cette figure, a priori il n'y a qu'une seule isosurface pour la surface rouge. As-tu essayé avec une seule isosurface?

    En fait c'est difficile de t'orienter sans savoir ce que contiennent tes données. Pourrais-tu nous fournir un échantillons représentatif de tes données?
    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.

  9. #9
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par cochrane Voir le message
    Je cherche à créer un volume d'eau, une veine d'eau. Typiquement, quelque chose du genre de la figure 1 (sans les cones et les lignes).

    http://www.control.isy.liu.se/studen...4/example.html
    L'exemple que tu as montré se plote à partir d'une matrice régulière 3D. Par exemple si tu as une matrice qui te donne Salinite[x,y,z].

    Chezrche dans la doc thématique dans le chapitre "volume visualization"
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    @Magelan : Oui j'ai essayé en utilisant isosurface avec une valeur de 37 de salinité, mais ce que j'aimerais c'est avoir tous les points de la salinité est supérieur ou égale à 37.

    Pour mes donnéeselle se présente sous la forme de fichier netcdf que matlab sait très bien lire et j'obtiens 4 variables : X <38x16 single>, Y <38x16 single>, Z<46x1 single> et Salinité <38x16x46 single>. En fait il faut imaginer une carte rectangulaire ou X et Y donnerai les coordonnées de chacun des points de cette carte. Z donne chaque niveau vertical et Salinité donne en chaque point
    de chaque niveau la salinité.
    ex: X= 1.1 2.02 Y = 2.04 2.01 Z= 3.04 Salinité= 36.4 37.2
    1 2.0 1 1.01 12.28 34.5 0

    (salinité=0 pour les points sur la terre)

    Pour simplifier la chose, j'ai créé X' <1x16 single> et Y'<38x1 single> qui représente la valeur moyenne des X et Y. Car ma grille n'est pas régulière (la terre n'est pas plate... dommage...). J'obtiens de très mince écarts et je règlerai ça plus tard.

    En tout cas avec isosurface(X',Y',Z,Salinité,37), j'obtiens bien ce que je veux, mais seulement pour la valeur 37...

    @ol9245 : Bonjour à toi, alors comme tu peux le voir au dessus j'ai une matrice salinité qui est fonction de x,y,z mais implicitement.
    La doc "volume visualization" je crois que je la connais par coeur maintenant et je n'ai pas trouvé ce que je cherchais (je n'ai pas dit que ça n'y était pas!).
    Si tu as une idée de comment je pourrai faire...

    Encore merci beaucoup!

  11. #11
    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
    Tu cherches à visualiser les voxels de ta structure, et matlab n'est pas l'outil le plus performant pour cela, voilà pourquoi il n'existe pas de fonction qui répondent directement à tes besoin.

    Mais ton volume n'étant pas très volumineux, donc tu devrais pouvoir t'en sortir.
    isosurface comme son nom l'indique extrait une surface, donc ce n'est pas adapté dans ton cas.

    Regarde sur le fex les exemples et contributions qui pourraient être utilisés :
    http://www.mathworks.com/matlabcentr...ge/?term=voxel

    D'autres mots clés pour la recherche : viewer 3D rendering ...

    Notamment peut-être cette fonction :
    Voxel Image?

    Une méthode pourrait être de :
    interpoler tes données sur une grille régulière (ce que tu sembles avoir fait).
    segmenter la zone que tu veux visualiser : attribuer 1 aux voxels supérieurs à un seuil de salinité et 0 aux autres
    visualiser ces voxels en utilisant Voxel Image.
    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.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Ce que tu m'indique à l'air très pertinent pour ce que je cherche à faire. Je regarde et te dis si ça a fonctionné!

  13. #13
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par cochrane Voir le message
    @ol9245 : Bonjour à toi, alors comme tu peux le voir au dessus j'ai une matrice salinité qui est fonction de x,y,z mais implicitement.
    La doc "volume visualization" je crois que je la connais par coeur maintenant et je n'ai pas trouvé ce que je cherchais (je n'ai pas dit que ça n'y était pas!).
    Si tu as une idée de comment je pourrai faire...

    fonction isosurface(x,y,z,v,0), en utilisant la fonction patch.
    c'est expliqué ici : http://www.mathworks.fr/help/techdoc...e/f5-3653.html
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    J'utilise ceci mais je ne comprend pas à quoi sert la fonction patch... En fesant une simple isosurface, j'obtiens (presque) ce que je veux. J'aimerais une "isosurface" qui me trace le volume compris entre deux isovalue. Mais je ne trouve pas...

  15. #15
    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
    isosurface permet de calculer l'isosurface, et patch permet de l'afficher.

    Tu pourrais nous montrer le résultat du tracé d'une isosurface?
    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.

Discussions similaires

  1. [Débutant] Création d'un volume 3D
    Par Memboro dans le forum Images
    Réponses: 11
    Dernier message: 03/12/2012, 19h46
  2. création d'un patient en volume dicom
    Par sellamelie dans le forum Images
    Réponses: 1
    Dernier message: 19/07/2011, 10h37
  3. [Kylix] Création d'un fichier lien
    Par DrQ dans le forum EDI
    Réponses: 2
    Dernier message: 14/05/2002, 21h30
  4. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 16h04

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