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 :

Créer une courbe en "escalier"


Sujet :

MATLAB

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Points : 222
    Points
    222
    Par défaut Créer une courbe en "escalier"
    Bonjour !
    Je dispose d'un vecteur de "0" et de "1", que j'aimerais extrapoler sous la forme d'un signal temporel, de niveau 0 ou 1 en fonction de la valeur de la coordonnée. Existe-t-il une fonction qui répond à mon besoin, ou dois-je régler le souci "à la main" ?
    Je vous remercie d'avance

  2. #2
    Membre habitué Avatar de Youni92
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 178
    Points : 182
    Points
    182
    Par défaut
    Salut,

    tu peux utiliser la fonction
    Mais c'est pas vraiment un signal, c'est un histogramme, je sais pas si c'est ce que tu veux.
    When you have eliminated the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Points : 222
    Points
    222
    Par défaut
    Merci de ta réponse !
    Je ne pense pas que cela me convienne. En fait, j'aimerais avoir une "vraie" fonction représentant la valeur du bit si je me déplace dans les coordonnées du vecteur.
    En gros, si j'ai un vecteur [0 1 0]; j'aimerais une fonction qui reste disons 1 seconde à la valeur 0, la seconde d'après à 1, et la 3 ème seconde à 0.
    Une sorte de step quoi, sauf que step ne donne que le réponse à un échelon d'une fonction, pas du tout ce que je veux quoi

  4. #4
    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
    le code suivant semble fonctionner mais y a peut-être plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    x=[0 1 0 0 1 1 0 1];
    t=[0,reshape(repmat(1:length(x)-1,2,1),1,2*(length(x)-1)),length(x)];
    line(t,reshape(repmat(x,2,1),1,2*length(x)))
    edit : la fonction STAIRS semble convenir aussi (par rapport à mon code : abscisses de 1 à 8, on ne voit pas le dernier palier). va voir la doc et suit les liens vers les autres fonctions

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Points : 222
    Points
    222
    Par défaut
    Salut,
    Et merci beaucoup !
    Est-ce que tu sais si je peux récupérer un vecteur de la fonction tracée ? J'ai besoin de manipuler un vecteur (avec la répétition de la même coordonnée donc). Parce qu'en fait, je ne dois pas tracer la fonction mais plutôt obtenir un vecteur de celle-ci. Tu vois ce que je veux dire ?
    En tout cas, merci beaucoup

  6. #6
    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
    ben c'est la solution que je t'ai proposée en utilisant repmat et reshape non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xx=reshape(repmat(x,2,1),1,2*length(x));
    là tu dupliques ton signal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t=[0,reshape(repmat(1:length(x)-1,2,1),1,2*(length(x)-1)),length(x)];
    et là tu crées les abscisses.

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Points : 222
    Points
    222
    Par défaut
    Je n'ai pas du tout comprendre alors, car quand je tape

    reshape(repmat(1:length(x)-1,2,1),1,2*(length(x)-1)) dans Matlab, il me sort

    ans =

    1 1 2 2 3 3 4 4 5 5 6 6 7 7

    Au lieu de

    0 0 11 00 00 etc..

  8. #8
    Membre actif
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Points : 222
    Points
    222
    Par défaut
    OK, au temps pour moi, la commande suivant affiche le bon résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x=[0 1 0 0 1 1 0 1];
    reshape(repmat(x,2,1),1,2*(length(x)))

Discussions similaires

  1. créer une courbe
    Par thunderpat dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/05/2009, 22h26
  2. créer une courbe de poids
    Par sergiot59 dans le forum Excel
    Réponses: 3
    Dernier message: 15/03/2009, 02h24
  3. [Artichow] Créer une courbe
    Par faucon54 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 29/05/2007, 00h54

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