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 :

Problèmes de programmation


Sujet :

MATLAB

  1. #1
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 48
    Par défaut Problèmes de programmation
    Bonjour, j'ai plusieurs problèmes de programmation donc je fais appel à vous pour venir à mon soutien :

    - j'aurais tout d'abord voulu savoir comment détecter le temps lorsqu'une courbe (ici, un vecteur) franchit un certain seuil (qui dans mon cas est fixé à 12) que ce soit en front montant ou descendant, ne garder que les valeurs en dessous mais étant les plus proches de ce seuil et insérer à ce vecteur que l'on vient de créer les valeurs de début et de fin du temps (qui correspondent au début et à la fin de l'expérimentation)

    - ensuite j'aurais aimé savoir comment former des couples de points à partir d'un vecteur

    -enfin je voudrais savoir comment "découper" un vecteur par plusieurs couples de points

    Merci d'avance pour votre aide

  2. #2
    Membre émérite
    Avatar de soft001
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2008
    Messages
    409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 409
    Par défaut
    Montres nous ce que tu as fait

  3. #3
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 48
    Par défaut
    Malheureusement, ceci constitue le début de mon programme Matlab et je n'ai pas pu faire de capture d'écran pour vous éclaircir mais je peux apporter quelques précisions si vous le souhaitez.

    Mon vecteur possède donc plusieurs pics et ces pics passent par un seuil que j'ai fixé et j'aimerais en fait récupérer les valeurs inférieures à 12 mais étant le plus proche de 12 lorsque ces pics sont en front montant ou descendant (ce qui par la suite créera un nouveau vecteur qui me permettra de créer (mais je ne sais pas actuellement comment) des couples de points).

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Par défaut
    Bonjour,
    Citation Envoyé par chris1495 Voir le message
    Malheureusement, ceci constitue le début de mon programme Matlab et je n'ai pas pu faire de capture d'écran pour vous éclaircir
    Tu n'as pas besoin de faire une capture d'écran, il suffit de faire un copiez-coller de ton code dans un message sur le forum, sans oublier d'utiliser les balises code :


    Pour ton problème, tu peux regarder la fonction find.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 48
    Par défaut
    Pour l'instant, je n'ai pas de code puisque cette étape doit constituer le début de mon programme (si ce n'est simplement un vecteur en entrée).

    J'ai déjà pensé à la fonction find mais le problème, c'est comment ne sélectionner que les valeurs les plus proches de 12 et non pas toutes celles qui se situent en dessous

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Par défaut
    Il y a plusieurs façons de procéder :
    • soit tu parcours chaque valeur de ton vecteur, et tu détermines les passages au-dessus et en-dessous de 12, et en fonction, tu sauvegardes les valeurs correspondantes.
    • soit tu travailles sur le vecteur complet et tu utilises des fonctions comme diff et find pour déterminer les changements de croissance/décroissance de ton vecteur
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  7. #7
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 48
    Par défaut
    Ok, merci pour l'indication. Il y a peut-être moyen de bricoler quelque chose avec les indications que tu viens de me fournir. En fait, pour mon premier "problème", je voudrais effectuer un seuillage (à 12) et ne garder que les valeurs les plus proches mais inférieures à ce seuil (exceptées les valeurs de début et fin d'expérience).

    Sinon, concernant les autres questions, quelqu'un aurait-il une idée ?

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Par défaut
    Tes autres questions ne sont pas très claires...

    Si tu pouvais essayer de reexpliquer en donnant un exemple de vecteur et le résultat que tu souhaites?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  9. #9
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 48
    Par défaut
    Ok, prenons comme exemple le vecteur temps T :

    T=[0 5 10 15 20 25 30 35]

    Comment à partir de ce vecteur pourrais-je former les couples de points suivants : 0-5 ; 10-15 ; 20-25 ; 30-35 ?

    Comment ensuite à partir de ces couples de points pourrais-je redécouper un autre vecteur ? (pour ensuite reformer plusieurs nouveaux vecteurs qui ne seraient que des parties du vecteur "découpé" par les intervalles (ou couples de points) ci-dessus).

  10. #10
    Membre émérite
    Avatar de soft001
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2008
    Messages
    409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 409
    Par défaut
    Tu veux dire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    T=[0 5 10 15 20 25 30 35]
    [m,n]=size(T);
    T1=reshape(T',2,n/2)

  11. #11
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 48
    Par défaut
    Pas vraiment. En fait, il faudrait fractionner le vecteur temps T pour former des couples de points comme ci-dessus, mais comment ? ^^,

  12. #12
    Membre émérite
    Avatar de soft001
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2008
    Messages
    409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 409
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >> T1(:,1)
     
    ans =
     
         0
         5
     
    >> T1(:,2)
     
    ans =
     
        10
        15

  13. #13
    Invité
    Invité(e)
    Par défaut
    Si j'ai bien compris, le code de soft001 peut tout de même t'aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    T=[0 5 10 15 20 25 30 35]
    [m,n]=size(T);
    T1=reshape(T',2,n/2)
    pas = ...
    for i = 1:n/2
       T1(1,i):pas:T1(2,i) 
    end

  14. #14
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 48
    Par défaut
    Merci à tous ! Grâce à vous petit à petit j'avance. Comment fait-on pour "fragmenter" un vecteur à partir de ces couples de points ?

  15. #15
    Invité
    Invité(e)
    Par défaut
    Pourrais-tu définir plus précisément ce que tu souhaites faire ?

  16. #16
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 48
    Par défaut
    Bien sûr ^^,. Je vais de nouveau prendre un exemple pour illustrer.
    Nous avons un vecteur A :
    A = [1 3 2 6 9 1 7 5]
    Il y a aussi le vecteur temps T défini précédemment de la manière suivante :
    T = [0 5 10 15 20 25 30 35].
    Nous avons réussi à former les couples de points suivants : 0-5 ; 10-15 ; 20-25 ; 30-35
    A partir de ces couples de points, comment fragmenter le vecteur A pour former :
    - le vecteur B = [1 3] et qui correspond à la valeur du vecteur A entre le temps T compris entre 0 et 5
    - le vecteur C = [2 6] et qui correspond à la valeur du vecteur A entre le temps T compris entre 10 et 15
    - le vecteur D = [9 1] et qui correspond à la valeur du vecteur A entre le temps T compris entre 20 et 25
    - le vecteur E = [7 5] et qui correspond à la valeur du vecteur A entre le temps T compris entre 30 et 35

    Voilà ^^,

  17. #17
    Invité
    Invité(e)
    Par défaut
    Rien ne change : c'est le même principe que précédemment.

  18. #18
    Membre émérite
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par chris1495 Voir le message
    Bien sûr ^^,. Je vais de nouveau prendre un exemple pour illustrer.
    Nous avons un vecteur A :
    A = [1 3 2 6 9 1 7 5]
    Il y a aussi le vecteur temps T défini précédemment de la manière suivante :
    T = [0 5 10 15 20 25 30 35].
    Nous avons réussi à former les couples de points suivants : 0-5 ; 10-15 ; 20-25 ; 30-35
    A partir de ces couples de points, comment fragmenter le vecteur A pour former :
    - le vecteur B = [1 3] et qui correspond à la valeur du vecteur A entre le temps T compris entre 0 et 5
    - le vecteur C = [2 6] et qui correspond à la valeur du vecteur A entre le temps T compris entre 10 et 15
    - le vecteur D = [9 1] et qui correspond à la valeur du vecteur A entre le temps T compris entre 20 et 25
    - le vecteur E = [7 5] et qui correspond à la valeur du vecteur A entre le temps T compris entre 30 et 35

    Voilà ^^,
    Ca me parait tordu ton truc.
    et ce qui se passe entre 5 et 10 secondes c'est pour les cochons ?

    pour sélectionner un front montant qui franchit la valeur 12 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    k = find(M<12 & M([2:end 1])>12) ;
    Ca te donne l'indice du point justa avant de franchir le front.

    Si tu cherche la date de cet événement dans un vecteur temps :
    L'avantage de cette approche c'est que tu détectee d'un seul coup TOUS les fronts montants.
    Si tu veux que le premier :

    si tu veux pas que ton code t'insulte si il n'a rien trouver :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if isempty(k)
    disp('pas de front montant')
    return
    end

  19. #19
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 48
    Par défaut
    Ce que j'ai donné était un exemple, ce n'est pas ce que j'obtiens réellement.

    Et pour détecter les fronts descendants aussi ?

  20. #20
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 48
    Par défaut
    En fait, c'est bon, j'ai trouvé pour les fronts descendants ^^,.

    Mais je reviens alors au problème suivant.
    A partir de ces couples de points, comment fragmenter le vecteur A (A = [1 3 2 6 9 1 7 5]) pour former :
    - le vecteur A1 = [1 3] et qui correspond à la valeur du vecteur A entre le temps T compris entre 0 et 5
    - le vecteur A2 = [2 6] et qui correspond à la valeur du vecteur A entre le temps T compris entre 10 et 15
    - le vecteur A3 = [9 1] et qui correspond à la valeur du vecteur A entre le temps T compris entre 20 et 25
    - le vecteur A4 = [7 5] et qui correspond à la valeur du vecteur A entre le temps T compris entre 30 et 35

    Attention, je me suis rendu compte que j'avais fait une légère erreur en prenant mon exemple car j'ai pris pour le temps un pas régulier alors qu'en réalité, il n'y a pas de concordance entre les valeurs qui composent le vecteur temps T.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Petit problème de programmation.
    Par willow.A dans le forum C
    Réponses: 3
    Dernier message: 08/01/2007, 16h36
  2. Problème en programmant un GUI swing
    Par kaelem dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 05/01/2007, 11h59
  3. Problème de programmation orientée objet
    Par dan65 dans le forum WinDev
    Réponses: 8
    Dernier message: 17/09/2006, 01h04
  4. problème finalisation programme
    Par depelek dans le forum Installation, Déploiement et Sécurité
    Réponses: 9
    Dernier message: 02/05/2006, 16h17
  5. Réponses: 1
    Dernier message: 26/09/2005, 19h29

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