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 :

Affichage resultat 3D


Sujet :

MATLAB

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 195
    Points : 101
    Points
    101
    Par défaut Affichage resultat 3D
    Bonjour,

    J’ai une matrice (A) 3D qui prend des valeurs à chaque instant t, mon but consiste à afficher les résultats en forme d’une cartographie en 3D pour chaque instant.
    En 2 D j’utilise la fonction « imagesc » comme suit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for n=1:length(variable.simulation_pas)
        imagesc('CData',A(:,:,n),'XData','YData');
     pause(0.02);
    end
    Je n’arrive pas à exploiter la fonction pour faire un affichage en 3D (comme l’image suivante)
    Images attachées Images attachées  

  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
    Par défaut
    Commence par faire une recherche avec le terme "voxel" dans le File Exchange
    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 régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 195
    Points : 101
    Points
    101
    Par défaut Affichage resultat 3D
    Merci Jerome Briot
    Merci pour votre réponse, par contre je ne voix pas comment je peux l'utiliser dans mon cas, en effet, comment je peux tracer plusieurs voxels sans utiliser le boucle for et aussi comment je change la couleur selon l'intensité ( valeur de A).

  4. #4
    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
    Par défaut
    Télécharge Voxel Image

    Ouvre le fichier voxel_image.m et modifie la line 82 comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    patch('Vertices',vert,'Faces',fac,'FaceColor','flat','FaceVertexCData',color,'FaceAlpha',alpha,'Edgecolor',edgec);
    Ensuite tu fais comme ceci :

    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
    % Valeurs arbitraires à afficher
    A = rand(5,4,8);
     
    % Couleur = valeur nomrmalisée de chaque voxel dans l'intervalle [1 64]
    % 64 = nombre de couleurs dans la palette de couleurs de la figure
    color = floor(1 + 63 * (A(:)-min(A(:)))./(max(A(:))-min(A(:))))
    % Chaque voxel possède 6 faces de la même couleur
    color = kron(color(:), ones(6,1));
     
    % Génération de la grille des voxels
    [x,y,z] = ndgrid(1:size(A,1),1:size(A,2),1:size(A,3));
     
    figure
     
    % Création des voxels
    voxel_image([x(:) y(:) z(:)], [1 1 1], color);
     
    view(3)
    axis equal tight vis3d
    Images attachées Images attachées  
    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)

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 195
    Points : 101
    Points
    101
    Par défaut Affichage resultat 3D
    Merci beaucoup Jerome Briot
    colorbar.

    Juste je veux savoir s'il est possible de changer le type de color map, je veux le changer par "jet" et ajouter un color bar.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    c=colorbar; colormap(jet);
    clim_max=Vmax; 
    clim_min=Vmin;
    ax=gca;
    ax.CLim=[clim_min clim_max];
    c.Label.String = 'Name';
    Merci

  6. #6
    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
    Par défaut
    Comme ceci ?

    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
    % Valeurs arbitraires à afficher
    A = rand(5,8,8);
     
    % Couleur = valeur nomrmalisée de chaque voxel dans l'intervalle [1 num_color]
    % num_color = nombre de couleurs dans la palette de couleurs de la figure
    num_color = 64;
    color = floor(1 + (num_color-1) * (A(:)-min(A(:)))./(max(A(:))-min(A(:))));
    % Chaque voxel possède 6 facesd de la même couleur :
    color = kron(color(:), ones(6,1));
     
    % Génération de la grille des voxels
    [x,y,z] = ndgrid(1:size(A,1),1:size(A,2),1:size(A,3));
     
    figure
    % Palette de couleur jet
    colormap(jet(num_color))
     
    % Création des voxels
    voxel_image([x(:) y(:) z(:)], [1 1 1], color);
     
    % Ajout colorbar
    c = colorbar;
    % Modification des étiquettes de la colorbar en fonction des valeurs de A
    yt = get(c, 'ytick');
    v = (yt-1)/(num_color-1)*(max(A(:))-min(A(:)))+min(A(:));
    set(c, 'yticklabel', sprintf('%.2f\n', v))
     
    view(3)
    axis equal tight vis3d
    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)

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 195
    Points : 101
    Points
    101
    Par défaut Affichage resultat 3D
    Merci beaucoup Jerome Briot

    c'est excellent !

    comment je peux fixer les limites de colarbar, entre 0 et 10 dans votre exemple?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    c = colorbar;
    % Modification des étiquettes de la colorbar en fonction des valeurs de A
    yt = get(c, 'ytick');
    v =linspace(0,10,6);
    % v = (yt-1)/(num_color-1)*(max(A(:))-min(A(:)))+min(A(:));
    set(c, 'yticklabel', sprintf('%.2f\n', v))
     
    % c=colorbar('Ticks',v);
    c.Label.String = 'Name';
    clim_max=10; 
    clim_min=0;
    CLims=[clim_min clim_max]; caxis(CLims);
    Merci

  8. #8
    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
    Par défaut
    Comme ceci :

    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
    % Valeurs arbitraires à afficher
    A = rand(5,8,8);
     
    % Couleur = valeur nomrmalisée de chaque voxel dans l'intervalle [1 num_color]
    % num_color = nombre de couleurs dans la palette de couleurs de la figure
    num_color = 64;
    color = floor(1 + (num_color-1) * (A(:)-min(A(:)))./(max(A(:))-min(A(:))));
    % Chaque voxel possède 6 facesd de la même couleur :
    color = kron(color(:), ones(6,1));
     
    % Génération de la grille des voxels
    [x,y,z] = ndgrid(1:size(A,1),1:size(A,2),1:size(A,3));
     
    figure
     
    % Palette de couleur jet 
    colormap(jet(num_color))
     
    % Création des voxels
    voxel_image([x(:) y(:) z(:)], [1 1 1], color);
     
    clim_max = 10; 
    clim_min = 0;
    caxis([clim_min clim_max]);
     
    % Ajout colorbar
    c = colorbar;
    % Modification des étiquettes de la colorbar en fonction des valeurs de A
    yt = get(c, 'ytick');
    v = (yt-1)/(num_color-1)*(max(A(:))-min(A(:)))+min(A(:));
    set(c, 'yticklabel', sprintf('%.2f\n', v))
     
    view(3)
    axis equal tight vis3d
    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)

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 195
    Points : 101
    Points
    101
    Par défaut Affichage resultat 3D
    Merci
    par contre, le but est de fixer les valeurs de colarbar entre 0 et 10.
    Images attachées Images attachées  

Discussions similaires

  1. Affichage Resultat multi critere
    Par le_niak dans le forum IHM
    Réponses: 10
    Dernier message: 13/03/2007, 14h42
  2. Réponses: 16
    Dernier message: 27/10/2006, 16h12
  3. [MySQL] affichages resultats requête avec un champ texte
    Par carelha dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/04/2006, 13h06
  4. [C#] Affichage resultat de requete dans 2 Labels
    Par kenzo080 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 02/06/2004, 20h07

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