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 :

fonction variante matlab


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2008
    Messages : 115
    Par défaut fonction variante matlab
    Bonjour à tous,

    je cherche tout simplement à exprimer une fonction changeant suivant les valeurs de x.

    Par exemple,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    x=[-10:10];
     
    if x<0
    Y=cos(x);
    else
    Y=sin(x);
    end
     
    plot(x,Y)
    Or cela ne semble pas marcher !! Auriez-vous des idées s'il-vous-plaît ?!

    Merci beaucoup.

  2. #2
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Ta condition ne veut rien dire.
    Logiquement derrière un IF tu devrais avoir 0 (FAUX) ou 1 (VRAI).
    Si tu regardes dans MATLAB ce que vaut x<0 tu verras qu'il s'agit d'un vecteur.

    Il faut donc faire une boucle sur les éléments de x dans un 1er temps.
    Ensuite le code peut être optimisé en utilisant l'indexage logique.

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2008
    Messages : 115
    Par défaut
    D'accord, je comprend bien et je l'ai déjà essayé, or avec une boucle for si je fais ma boucle sur les x et que je sors un vecteur pour pouvoir ensuite tracer je ne peux pas car mon vecteur x contient un 0 et je ne peux pas avoir d'élément 0 : x(0).

    Je ne vois vraiment pas comment tracer une fonction changeant de définition sur deux intervalles...!!

    Merci encore.

  4. #4
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Peux-tu nous montrer le code que tu as essayé ?
    Que ton x contienne un ou plusieurs 0 ne pose aucun problème.
    Tu sembles confondre valeur et indice...

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2008
    Messages : 115
    Par défaut
    Je voudrais bien mais je pense en effet confondre valeur et indice et rien ne marche.
    L'idée de base est très simple en plus !!
    Je cherche à exprimer une fonction étant (simple exemple) un sinus sur l'intervalle [-10:0] et un cosinus sur [0:10] puis à la tracer. Mon problème est cette scindation de fonction sur mon intervalle des x.
    Je pensais établir une boucle for pour lui dire (au programme) de me prendre telle fonction pour x allant de un tel à un tel mais je ne peux pas sortir de vecteur de cette boucle pour tracer.
    Donc je suis parti sur une boucle if en définissant un vecteur entier x=[-10:10] et en posant des conditions : if x<0 y=sin(x); else y=cos(x); end (je n'ai pas sauté de ligne là mais c'est pareil) mais cela ne marche pas non plus !!
    Je suis à cours d'idées là...!

  6. #6
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    Une idée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    % Definition
    x = [-10:10];
    split = 0;
     
    % Calcul des données
    result = [cos(x(x<=split)), sin(x(x>split))];
     
    % Tracé des données
    plot(x, result)
    Bon courage,
    Duf

Discussions similaires

  1. comment integré les fonction de matlabe en c++ builder
    Par kachaloarmin dans le forum C++Builder
    Réponses: 2
    Dernier message: 09/05/2008, 22h09
  2. Utiliser une fonction de MATLAB dans un code C++
    Par Bella la vita dans le forum MATLAB
    Réponses: 6
    Dernier message: 15/01/2008, 15h18
  3. [hamming] Comment utiliser cette fonction avec Matlab 6.5
    Par vivematlab dans le forum Signal
    Réponses: 2
    Dernier message: 02/05/2007, 16h52
  4. [sbadcond] Est-ce une fonction de MATLAB ?
    Par pierrecarray dans le forum MATLAB
    Réponses: 2
    Dernier message: 29/04/2007, 18h47

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