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 :

Problème d'échelle [Débutant]


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Problème d'échelle
    Bonjour à tous,

    Je travaille actuellement sur un projet de modélisation de l'élasticité d'une membrane via Matlab. J'ai un problème avec l'échelle de la figure 3D... J'aimerais faire en sorte que l'échelle de la figure change automatiquement si je modifie les dimensions de la membrane.

    J'ai essayé de programmer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set(gca,'xtick',0:(L/10):(L))
    avec L longueur de la membrane (carrée), mais ça ne marche pas.

    Quelqu'un a -t-il une solution à ce problème?

    Merci d'avance pour vos idées.

  2. #2
    Membre habitué
    Homme Profil pro
    doctorant
    Inscrit en
    Décembre 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : doctorant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 101
    Points : 148
    Points
    148
    Par défaut
    peut tu mettre un exemple complet de ce que tu as dans ta figure?

    tu as placé ta ligne de code après avoir tracé ta figure?

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

    Ce que tu veux faire, c'est modifier les limites de tes axes, il faut utiliser xlim et non xtick :
    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.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 6
    Points : 2
    Points
    2
    Par défaut RE: Problème d'échelle
    Merci de m'avoir répondu aussi vite!!

    J'ai mis en pièce jointe la figure que j'obtient après avoir exécuté ma fonction.

    J'ai corrigé mon programme de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    %Affichage du profil de la membrane.
    mesh(-F)
    
    set(gca,'xlim',[0 l]) % l représente la longueur de la membrane carrée
    set(gca,'ylim',[0 l])
    set(gca,'zlim',[-100 0])
    
    xlabel('longueur')
    ylabel('largeur')
    zlabel('deformation')
    end
    Mais quand j'exécute la fonction, j'obtient la matrice résultat mais la figure ne s'affiche plus. En revanche si à la place de "l" je mets un nombre la figure s'affiche correctement comme dans la pièce jointe.

    Je ne sait vraiment pas ce qu'il faut que je change. Est-ce que vous auriez des idées?

    Merci d'avance.
    Images attachées Images attachées  

  5. #5
    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
    Que vaut l? Si l≈30, tu devrais avoir à peu près la même figure...
    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.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    'l" vaut 0.001 en réalité 1mm.

  7. #7
    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, mais il faut que tu adaptes cette valeur à l'échelle que tu as utilisée pour tracer ta figure. Sur le maillage de ta figure, 1 unité correspond à combien de mètre?
    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.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Si je mets l=30 j'obtiens le même profil mais les déformations sont plus grandes (logique donc le modèle fonctionne ).

    Je te mets la figure en annexe. Ce que je cherche à faire c'est juste à programmer l'échelle de la figure, pour que quand je rentre les dimensions de la membrane je puisse directement lire les cotes "réelles" des points calculés.

    Merci.
    Images attachées Images attachées  

  9. #9
    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
    Quand tu affiche ton maillage :
    pourquoi ne pas avoir indiqué les coordonnées x et y :
    Tu as bien dû les définir pour calculer F, non? Tu aurais ainsi directement les bonnes valeurs affichées sur le graphique.
    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.

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Non je n'ai pas explicitement défini les coordonées des points de la membrane je pense l'avoir directement codé en matrice. Je te joins mon code:
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    function [ F ] = matrice(n,Pa,c1)
    
    %n represente le nombre de point pour definir le quadrillage.
    %La fonction 'matrice' nous donne le Laplacien en fonction du quadrillage.
    
    l=30;
    k=l/(n+1);
    h=l/(n+1);
    m=n^2;
    
    %Predefinir la matrice A comme une matrice identité.
    clear A
    A=eye(m);
    
    
    %Ajout des éléments diagonaux.
    for i=1:1:m
        A(i,i)=(-2/h^2-2/k^2)*A(i,i);
    end
    
    
    %Ajout des éléments au dessus et en dessous de la diagonale.
    for i=1:1:m-1
      A(i,i+1)=A(i,i+1)+1/h^2;
      A(i+1,i)=A(i+1,i)+1/h^2;
    end
    
    %Ajout des zéros qui prend en compte les effets de bords.
    for i=1:1:(n-1)
        A(n*i,n*i+1)=0;
        A(n*i+1,n*i)=0;
    end
    
    %Ajout des derniers éléments.
    for i=1:1:m-n
       A(i+n,i)=A(i+n,i)+1/k^2;
       A(i,n+i)=A(i,n+i)+1/k^2;
    end
    
    %Definition de la matrice pression.
    P=ones(m,1);
    P=P*Pa;
    
    %Calcul de la deformée sous la forme d'une matrice 
    B=-c1*A;
    D=inv(B);
    E=D*P;
    
    %Formation d'une matrice (n,n) de la forme de la membrane.
    F=reshape(E,n,n);
    
    %Ajout des conditions aux limites sur les contours.
    Z=zeros([1 n]);
    ZZ=zeros([n+2,1]);
    F=[Z;F;Z];
    F=[ZZ F ZZ];
    
    %Affichage du profil de la membrane.
    mesh(-F)
    
    %xlim([0 l])
    %ylim([0 l])
    %zlim([-100 0])
    
    xlabel('longueur')
    ylabel('largeur')
    zlabel('deformation')
    end
    Peut-être qu'il faut que je modifie mon code? J'ai essayais de mettre
    Mais c'est faux et le message d'erreur qui s'affiche est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> matrice(25,1.3*10^11,100)
    ??? Error using ==> mesh at 80
    Data dimensions must agree.
    
    Error in ==> matrice at 59
    mesh(n,n,-F)
    J'ai essayé ça parce que les points de la matrice représentent le maillage de la membrane. Mais vu que je ne sais pas comment modifier la fonction, est-ce que t'aurais pas une idée?
    Merci d'avance.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Cela ne marche pas comme ça, il te faut créer une 'grille' avec la fonction meshgrid.
    D'après ce que j'ai vu, F est de taille n+2 x n+2, donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    l = 1e-3;
    x = linspace(0,l,n+2);
    [X,Y] = meshgrid(x,x);
    mesh(X,Y,-F);

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup, c'est génial ça marche!!

    Bonne soirée à tout le mode!

  13. #13
    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 163
    Points
    53 163
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Cela ne marche pas comme ça, il te faut créer une 'grille' avec la fonction meshgrid.
    MESHGRID n'est pas nécessaire si la grille est régulière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    l = 1e-3;
    x = linspace(0,l,n+2);
    mesh(x,x,-F);
    Comme écrit dans la documentation de MESH :
    mesh(X,Y,Z) draws a wireframe mesh with color determined by Z so color is proportional to surface height. If X and Y are vectors, length(X) = n and length(Y) = m, where [m,n] = size(Z). In this case, (X(j), Y(i), Z(i,j)) are the intersections of the wireframe grid lines; X and Y correspond to the columns and rows of Z, respectively.
    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)

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

Discussions similaires

  1. problème d'échelle dans graphique
    Par markoBasa dans le forum iReport
    Réponses: 1
    Dernier message: 02/09/2008, 09h18
  2. [surf] Problème d'échelle de couleur
    Par Irene_Adler dans le forum MATLAB
    Réponses: 2
    Dernier message: 07/08/2008, 21h38
  3. [Débutant] Problème d'échelle sur un graphique
    Par clo85 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 06/07/2007, 13h52
  4. [MFC] Problème d'échelle d'impression
    Par Philippe320 dans le forum MFC
    Réponses: 4
    Dernier message: 04/02/2006, 08h59
  5. MFC Impression Direct: Problème d'échelle
    Par thealex321 dans le forum MFC
    Réponses: 8
    Dernier message: 17/11/2004, 22h54

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