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 :

representer un vecteur ligne en fonction d'un autre


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 7
    Points : 14
    Points
    14
    Par défaut representer un vecteur ligne en fonction d'un autre
    Bonjour,

    je veux représenter q2(1,: ) en fonction de x(i) qui sont des vecteurs lignes, mais cela ne donne pas.
    avec l'instruction plot(x(i),q2(1,: )
    voici le code qui m'a permis de sortir mes variables
    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
    function araud
    %initialisation
    %boucle de calcul sur la largeur du convergent divergent
    clear all
    close all
    %format long
    global g;
    cfl=0.8;
    m=2;
    g=9.81;
    L=1;
    nx=10;
    dx=2*L/nx;
    %q1=0.1*zeros(2,nx);
    h0=1.0;
    u0=0;
    hl=0.1;
    ul=0;
    x0=0;
    t=0;
    tstop=0.5;
        x=(-L+dx/2:dx:L-dx/2);
    %q1=finit(x0,dx,h0,hl,u0,ul)
    q1=zeros(2,nx);
    q2=zeros(size(q1));
    %conditions initiale
    for i=1:nx/2
      if x<=x0
        q1(1,i)=h0;
    q1(2,i)=h0*u0;
      else
    %for i=nx/2+1:nx
    q1(1,i)=hl;
    q1(2,i)=hl*ul;
      end
    end
    n=0;
    % conditions aux limites libres
    q2(:,1)=q2(:,2);
    q2(:,nx+1)=q2(:,nx);
     
    %while (t<tstop)
     %   n=n+1;
     for j=1:m 
     dt=0.5*cfl*dx/max(abs(q1(2,:)./q1(1,:)+(g*q1(1,:)).^.5))
    if t+dt>tstop
        dt=tstop-t;
    end
    t=t+dt;
    h=dt/dx;
    %q2(1,:)=q1(1,:);
    %q2(2,:)=q1(1,:)*q1(2,:);
    for i=2:nx-1
       x(i)=i*dx
        % q2(:,i)=q1(:,i)-h*(flux_sv(q1(:,i)-flux_sv(q1(:,i-1))))
       %q2(:,i)=q1(:,i)-h*(flux_centre(q1(:,i),q1(:,i+1),h)-flux_centre(q1(:,i-1),q1(:,i),h))
       q2(:,i)=q1(:,i)-h*(flux_centre_wendroff(q1(:,i),q1(:,i+1),h)-flux_centre_wendroff(q1(:,i-1),q1(:,i),h))
     
       %  q3(:,i)=q1(:,i)-h*(flux_centre_wendroff(q1(:,i),q1(:,i+1),h)-flux_centre_wendroff(q1(:,i-1),q1(:,i),h));
      %q4=0.5*(q2+q3);
    end
    plot(x(i),q2(1,:));
    F(j)=getframe;
    movie(F,m)
     %end
     
    end
    Merci pour tout
    il faut mettre plot(x,q2(1,1:nx)) pour régler le problème de dimension

  2. #2
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    salut
    x(i) a peu de chance d'être un vecteur ligne
    voir la faq sur l'indexage
    dans ton cas je pense que tu veux écrire

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Salut,

    En regardant rapidement ton code, tu as déjà un problème de dimension. x possède 10 valeurs et q2 en possède 11. Donc il va y avoir un problème au niveau de l'affichage.

    Pour ton graphe, cette ligne devrait suffire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    plot(x,q2(1,:))
    % et/ou
    plot(x,q2(2,:))

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

Discussions similaires

  1. [XL-2010] Ecrire sur une ligne en fonction d'une autre
    Par backx3 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/02/2015, 14h33
  2. [JSP]retour a la ligne dans fonction mailto
    Par logica dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 19/04/2006, 01h50
  3. [VBA]comptage de lignes en fonction du contenu des cellules
    Par calimero91 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 22/12/2005, 11h38
  4. [vbexcel]tri ou regroupement de ligne en fonction de valeur.
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/12/2005, 18h22
  5. insérer des sauts de lignes en fonction du navigateur
    Par remi59 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/08/2005, 19h15

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