Tracer à l'aide du Matlab un solide de forme cylindrique
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Tracer à l'aide du Matlab un solide de forme cylindrique



  1. #1
    turbulent

    Tracer à l'aide du Matlab un solide de forme cylindrique


    ------

    Bonjour;
    Je suis entrain d'étudier l'évolution d'un phénomène à travers un solide de forme cylindrique. Je dois calculer les paramètres de ce phénomène en chaque point du solide (r,theta,z: coordonnées cylindriques). Mon problème actuelle est au lieu d'obtenir une forme cylindrique, j'obtiens une forme conique. Merci de bien m'aider à cibler l'erreur.
    Code:
    l=02.2;
    nc=10;
    deltaz=l/(nc-1);
    %deltaz=.5;
    
    x=zeros(41,41);
    y=zeros(41,41);
    z=zeros(41,41);
    c=zeros(41,41);
    
    % x=zeros(41,41,41);
    % z=zeros(41,41,41);
    % y=zeros(41,41,41);
    
    r(1,1)=0;
    theta(1,1)=0;
    % r(1,1,1)=0;
    % theta(1,1)=0;
    
    % r(1,1,1)=0;
    % theta(1,1,1)=0;
    % y=0:deltay:l;
    %y(1,1)=20;
    for n=2:4;
    for p = 2:40;
    for j = 2:40;
    % r(p,j,n)=2*(p-1)/39;
    % theta(p,j,n)=2*pi*(j-1)/39;
    
    r(p,j)=2*(p-1)/39;
    theta(p,j)=2*pi*(j-1)/39;
    x(p,j)=r(p,j).*cos(theta(p,j));
    y(p,j)=r(p,j).*sin(theta(p,j));
    %c=[x(p,j),y(p,j)];
    z(p,j)=z(p,j)+deltaz;
    % z(p,j,n)=n;
    % x(p,j,n)=r(p,j,n).*cos(theta(p,j,n));
    % y(p,j,n)=r(p,j,n).*sin(theta(p,j,n));
    %y(p,j)=20;
    %z(n)=z(n)+1;
    end
    end
    % for a = 2:40;
    % for b = 2:40;
    % z(a,b)=z(a,b)+1;
    end
    %d(p,j)= z(p,j).*zeros(1,1);
    % end
    % for p = 2:40;
    % for j = 2:40;
    % y(p,j)=0:l*(p-1).*(j-1)/39:l;
    % end
    % end
    %plot(x(:,:),z(:,:),'k') % trace un cercle
    % y=0:deltay:l;
    %vol3d(x(:,:),z(:,:),y(:),'ko')
    % plot(x(:,:),z(:,:)) %,y(:)
    plot3(x(:,:),y(:,:),z(:,:))
    %plot3(c,d(:,:))
    %cylinder(x(:,:,:),z(:,:,:),y(:,:,:))
    %squeeze(x(:,:),z(:,:))
    
    grid on
    box on
    
    % axis equal
    axis equal
    
    % adjust the view
    view([200,20])
    
    % annotate the plot
    xlabel('x-axis','Fontname','Times','Fontsize',10)
    ylabel('y-axis','Fontname','Times','Fontsize',10)
    zlabel('z-axis','Fontname','Times','Fontsize',10)
    title('Cylinder in three-space.','Fontname','Times','Fontsize',10)

    -----
    Dernière modification par Jack ; 06/08/2015 à 19h16. Motif: balises code

  2. #2
    Antoane
    Responsable technique

    Re : Tracer à l'aide du Matlab un solide de forme cylindrique

    Bonjour,

    Pourrais-tu indenter, commenter et nettoyer ton code ? Sa donnera bien plus envie à étudier

    Il doit cependant déjà y avoir une coquille à la ligne :

    Code:
    z(p,j)=z(p,j)+deltaz;
    Qui, après initialisation de z à 0, équivaut à mettre tous les z des points considérés dans la boucle for à deltaz.

    Par ailleurs, tu peux débugger ton programme en remplaçant le plot par :
    Code:
    plot3(x(:,:),y(:,:),z(:,:), 'x')
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  3. #3
    turbulent

    Re : Tracer à l'aide du Matlab un solide de forme cylindrique

    Bonjour;
    Merci Antoane pour les éclaircissement et je reconnais que je ne suis pas fort en Matlab.
    la difficulté réside dans z, sachant que le cylindre et la superposition de plusieurs disques, où les z du même disque (horizontal) sont les mêmes et en passant au disque supérieur z augmente. Donc, j'ai besoin d'un code qui me permet de tenir compte de la variation de z.
    J'ai essayé ceci mais ça ne marche pas:
    [CODE][/MATLAB]
    %% Coordonnées rectangulaires
    x=zeros(41,41);
    y=zeros(41,41);
    z=zeros(41,41);

    %% Coordonnées cylindriqueses
    rmax=2;
    thetamax=2*pi;
    r(1,1)=0;
    theta(1,1)=0;
    z(1,1)=0;

    for p = 2:40;
    for j = 2:40;
    r(p,j)=2*(p-1)/39;
    theta(p,j)=2*pi*(j-1)/39;
    x(p,j)=r(p,j).*cos(theta(p,j)) ;
    y(p,j)=r(p,j).*sin(theta(p,j)) ;
    z(p,j)=z(p,j);
    end
    end
    if (r(p,j)==rmax)
    if (theta(p,j)==thetamax)
    z(p,j)=z(p,j)+1;
    for p = 2:40;
    for j = 2:40;
    r(p,j)=2*(p-1)/39;
    theta(p,j)=2*pi*(j-1)/39;
    x(p,j)=r(p,j).*cos(theta(p,j)) ;
    y(p,j)=r(p,j).*sin(theta(p,j)) ;
    end
    end

    end
    end

    %plot3(x(:,,y(:,,z(:,,'x')
    plot3(x(:,,y(:,,z(:,)
    grid on
    box on
    axis equal
    view([200,20])

    xlabel('x-axis','Fontname','Times','Font size',10)
    ylabel('y-axis','Fontname','Times','Font size',10)
    zlabel('z-axis','Fontname','Times','Font size',10)
    title('Cylinder in three-space.','Fontname','Times','Fo ntsize',10)

Discussions similaires

  1. aide pour tracer une courbe sous matlab
    Par inviteadd93aa2 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 22/04/2010, 16h10
  2. tracer une suite sous matlab
    Par invite03c688d5 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 28/07/2009, 09h26
  3. Tracer graphique Matlab
    Par inviteaf8d1eb2 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 05/06/2008, 20h40
  4. aide matlab sur reconnaisance de forme
    Par invite6f29fc26 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 01/08/2006, 19h24
  5. Matlab : tracer des vecteurs
    Par invitefa99ccdb dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 21/01/2005, 16h07