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 :

Génération de trajectoire


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Génération de trajectoire
    Bonjour,
    J'aimerais générer le signal suivant mais lorsque je simule y prend la valeur finale (10) alors que le résultat doit être un courbe entre 0 et 200 secondes.
    le programme est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function y =traj(t)
    for t = 0:200
         if (t>=0 && t<50)
              y=2;
           elseif(t>=50 && t<=150)
             y=t.^5+t.^4+t.^3+t.^2+t;
           else
             y=10;
         end
    end
    return

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur Photonique
    Inscrit en
    Mars 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Photonique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2013
    Messages : 124
    Points : 126
    Points
    126
    Par défaut
    Bonjour,

    c'est tout à fait normal étant donné que y dans votre code est un scalaire et non un vecteur.
    à chaque itération, la valeur de y est effacée et remplacée par une nouvelle.
    Pour que y soit au final un vecteur de (200x1) vous devez modifier votre code de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function y = traj(t)
    for t = 0:200
         if (t>=0 && t<50)
              y(t)=2;
           elseif(t>=50 && t<=150)
             y(t) =t.^5+t.^4+t.^3+t.^2+t;
           else
             y(t) =10;
         end
    end
    return

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci.

  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 318
    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 318
    Points : 52 958
    Points
    52 958
    Par défaut
    Pour t = 0, le code fournit par Mac52 ne fonctionnera pas.

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur Photonique
    Inscrit en
    Mars 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Photonique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2013
    Messages : 124
    Points : 126
    Points
    126
    Par défaut
    En effet je me suis juste contenté de reprendre le code initial sans le vérifier point par point.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    t = 0:200;
    for ii = 1:length(t)
        if (t(ii)>=0 && t(ii)<50)
            y(ii) = 2;
        elseif(t(ii)>=50 && t(ii)<=150)
            y(ii) = t(ii).^5+t(ii).^4+t(ii).^3+t(ii).^2+t(ii);
        else
            y(ii) = 10;
        end
    end

  6. #6
    Membre habitué
    Homme Profil pro
    Ingénieur en science de l'environnement
    Inscrit en
    Août 2013
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur en science de l'environnement

    Informations forums :
    Inscription : Août 2013
    Messages : 97
    Points : 149
    Points
    149
    Par défaut
    par ailleurs ça ne sert à rien de mettre l'argument t en appelant la fonction puisque t est écrasé par t = 0:200;

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/03/2015, 22h24
  2. Génération programmatique d'un UUID
    Par jIdJo dans le forum MFC
    Réponses: 2
    Dernier message: 18/07/2003, 03h50
  3. [Lomboz] Génération de code pour EJB
    Par paikan dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 09/07/2003, 15h28

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