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

Scilab Discussion :

problème de plot


Sujet :

Scilab

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 294
    Points : 128
    Points
    128
    Par défaut problème de plot
    Bonjour

    Je n'arrive pas à avoir la forme en pointe que devrait avoir cette fonction.
    Le plot ne m'affiche rien. Merci d'avance.

    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
     
    function y=phi(x,N,i)
    h=1./(N+1);
    if (i-1)*h <= x & x <= i*h then
        y=(x-(i-1)*h)/h;
    elseif i*h <= x & x <= (i+1)*h then
        y=((i+1)*h -x)/h;
    else
        y=0;
    end
    endfunction
     
    x=[0:0.1:2*%pi]';
    //simple plot
    plot2d(phi(x,10,2));

  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 316
    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 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Si je comprend bien :
    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
    function y = phi(x,N,i)
        h = 1.0/(N+1)
        for k = 1:size(x,"*")
            if (i-1)*h <= x(k) & x(k) <= i*h then
                y(k) = (x(k)-(i-1)*h)/h;
            elseif i*h <= x(k) & x(k) <= (i+1)*h then
                y(k) = ((i+1)*h -x(k))/h;
            else
                y(k) = 0;
            end
        end
     
    endfunction
     
    x = [0:0.1:2*%pi]';
    //simple plot
    plot2d(x, phi(x,10,2));
    ou
    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
    function y = phi(x,N,i)
     
        h = 1.0/(N+1);
     
        nx = size(x,"*");
        y = zeros(1,nx);
     
        for k = 1:nx
            if (i-1)*h <= x(k) & x(k) <= i*h then
                y(k) = (x(k)-(i-1)*h)/h;
            elseif i*h <= x(k) & x(k) <= (i+1)*h then
                y(k) = ((i+1)*h -x(k))/h;
            end
        end
     
    endfunction
     
    x = 0:0.1:2*%pi;
    //simple plot
    plot2d(x, phi(x,10,2));
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function y = phi(x,N,i)
     
        h = 1.0/(N+1);
     
        y = (((i-1)*h <= x & x <= i*h).*(x-(i-1)*h) + (i*h <= x & x <= (i+1)*h).*((i+1)*h -x))/h;
     
    endfunction
     
    x = 0:0.1:2*%pi;
    //simple plot
    plot2d(x, phi(x,10,2));

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 294
    Points : 128
    Points
    128
    Par défaut
    Merci.

    C'est cool comme réponse.
    En fait, en hauteur c'est sensé allé jusqu'à 1 et de 0 à 1 en abscisse.

  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 316
    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 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Citation Envoyé par xavierdestev Voir le message
    En fait, en hauteur c'est sensé allé jusqu'à 1 et de 0 à 1 en abscisse.
    Ajoute des points dans le vecteur x en réduisant le pas

    Par contre, il n'est pas sûr que tu trouve exactement une valeur égale à 1.

    Pour les abscisses, x est dans l'intervalle [0 2pi], non ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 294
    Points : 128
    Points
    128
    Par défaut
    Merci.

    Je vais changer l'implémentation ce weekend.
    C'est vraiment trop lourd pour avoir un graphique de la fonction.

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

Discussions similaires

  1. Simple problème de plot
    Par ViolaineHI dans le forum MATLAB
    Réponses: 1
    Dernier message: 02/04/2013, 05h53
  2. [Débutant] problème avec plot
    Par mclaurien dans le forum MATLAB
    Réponses: 3
    Dernier message: 22/09/2011, 16h16
  3. Problème de plot
    Par d0n32 dans le forum MATLAB
    Réponses: 4
    Dernier message: 07/03/2011, 16h09
  4. Problème avec "Plot"
    Par sorrow08 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 09/05/2009, 22h10
  5. Problème de plot : visualiser répartition d'une grandeur en 3D
    Par eduardo.mendoza dans le forum MATLAB
    Réponses: 8
    Dernier message: 14/02/2007, 16h51

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