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 :

Plot d'un vecteur


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Par défaut Plot d'un vecteur
    Bonjour le forum,

    Je souhaite avoir des informations pour tracer un vecteur SVP.
    Je sais, c'est pas bien compliqué, normalement

    En effet, si le code est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    x=linspace(0,0.0001,1000)
     //définition des divers paramètres utiles par la suite
     
    c=b*erfc(x./(2*sqrt(D*t*3600)))
    Dans ce cas simple, il suffit d'entrer la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot2d(x, c,logflag="nl",frameflag=1,rect=[0,1e16,0.0001,1e22])
    et la figure apparait sans problème.

    Le problème qui se pose à moi est que j'effectue une boucle "for", car le paramètre D est fonction de c. Mon code est le suivant:
    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
     
    // essai de simulation de diffusion
     
    //entree des divers données de la diffusion
    t=input("Please, enter the diffusion time (heure):");
    cs1=input("boron surface concentration:");
    Tcelsius=input("Please, enter the diffusion temperature:");
    T=Tcelsius+273.15;
    b=cs1
    xbasc() //efface le graph
     
    //calcul de gap, de ni pour le calcul de D
    Ea=-3.46;q=1.60217733e-19;k=1.380658e-23;
    kbis=k/q;
     
    gap=1.166-(4.73e-4*(T^2)/(636+T));
     
    Nc=2.86e19*(T/300)^(1.58);
    Nv=3.1e19*(T/300)^(1.85);
    nintrinsec=sqrt(Nc*Nv)*exp(-gap/((2*kbis)*T));
     
    Dintrinsec=0.76*exp((Ea/kbis)/T);
    D0=0.037*exp((Ea/kbis)/T);
     
    //Boucle sur D car dependant de la concentration de bore 
     
      for x=linspace(0,0.0001,1000),D=D0+((b/nintrinsec)*Dintrinsec),c=b*erfc(x./(2*sqrt(D*t*3600))),b=c,end
     
    plot2d([x], [c],logflag="nl",frameflag=1,rect=[0,1e16,0.0001,1e22])
    Le code "fonctionne" bien dans le sens où pour chaque valeur de "x(i)", le paramètre D est calculé en fonction de "c(i-1)". Par contre, le graphique tracé est "vierge". Je pense que le plot ne me trace que le dernier point c calculé. Est le cas?
    Et comment faire pour tracer c pour chaque valeur de x? Faut-il créer un nouveau vecteur qui "grossit" à chaque valeur de c(x)?

    Merci de votre aide,

    Johann

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonjour.
    Pour tracer les courbes je ferais comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //Boucle sur D car dependant de la concentration de bore 
    n=1;b(1)=0;
      for x=0:0.01:100
        n=n+1;
        D=D0+((b(n-1)/nintrinsec)*Dintrinsec);
        c(n)=b(n-1)*erfc(x/(2*sqrt(D*t*3600)));
        b(n)=c(n);
        end
    plot2d(1:n,c);//,logflag="nl",frameflag=1;//rect=[0,1e16,0.0001,1e22])1

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Par défaut
    Bonjour Phryte,

    Merci de ta réponse. Certes, je n'obtient absolument pas le graph désiré, mais j'obtiens bien un graph, ce qui est bon signe.

    Je me penche de nouveau sur le problème.


    Johann

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Par défaut
    Re bonjour Phryte,

    Il y a plusieurs points sur lesquels je souhaiterai avoir des informations concernant ton code:
    1- n est un entier, il représente bien un indice?
    2- b(1) représente alors dans ce cas la valeur de b pour l'indice n égale à 1, et ainsi de suite??
    3-on calcule bien c pour les différents x, en prenant en compte le changement de b, mais pourquoi ne plot tu pas x, mais de "1:n"?
    4-si j'essaie de plotter c en fonction de x (et c'est bien cela qui m'intéresse), l'erreur suivant apparait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            !--error 999 
    plot2d: Les paramètres first et second a des dimensions incompatibles.
    at line      39 of exec file called by :    
    exec("essaidif.sce")
    Voilà, merci pour les infos,

    Johann

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    1) oui
    2) oui
    3) tu fais (car x n'est pas mémorisé dans la boucle) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x=0:0.01:1010;
    plot2d(x(1:length(c)),c);

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Par défaut
    Bonjour Phryte,

    Merci beaucoup de ton aide et désolé si mes questions volent au "ras des pâquerettes" comme on dit
    Vu que je débute, je préfère poser des questions, même stupides histoires de comprendre au mieux ce que je fais.

    Encore merci,
    Johann

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

Discussions similaires

  1. [contourf] Countour plot avec 3 vecteurs
    Par _TiPi_ dans le forum MATLAB
    Réponses: 4
    Dernier message: 12/05/2015, 09h32
  2. plot de gros vecteurs
    Par jcanivet dans le forum MATLAB
    Réponses: 10
    Dernier message: 15/03/2012, 13h57
  3. Générer un Graph Plot, longueur de vecteur
    Par 1ma91nat10n dans le forum MATLAB
    Réponses: 3
    Dernier message: 11/12/2011, 18h16
  4. [plot] Valeurs positives d'un vecteur seulement
    Par improcess dans le forum MATLAB
    Réponses: 4
    Dernier message: 04/12/2011, 13h52
  5. Plot vecteurs 2 à 2
    Par Newenda dans le forum MATLAB
    Réponses: 5
    Dernier message: 29/05/2009, 09h00

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