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 :

Ignorer les X prochaines lignes


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 33
    Points : 10
    Points
    10
    Par défaut Ignorer les X prochaines lignes
    Bonjour,

    J'aimerai avoir votre aide pour le cas suivant.

    J'ai une colonne de X chiffres:

    0
    25
    100
    90
    95
    80
    50
    60
    70
    20
    0
    0
    13
    45
    100
    90
    95
    80
    30
    40
    50
    20
    0

    Je voudrais que mon code parte de la 1ère ligne, puis dès qu'il trouve une valeur > à 100 alors il ignore les 3 prochaines lignes et ensuite calcule la moyenne des 3 suivantes. Et il s'arrête à la dernière ligne de ma colonne.

    Ici la réponse est 60 et 40.

    Je pense que je dois utiliser la fonction IF et ELSEIF mais j'y arrive pas.

    Merci pour votre aide.

  2. #2
    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 : 40
    Localisation : France

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

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

    Tu dois pouvoir y arriver en commencant par un FIND qui te renverra les indices des valeurs supérieures à 100:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    idx = find(X>100);
    Après il ne reste "plus qu'à" travailler sur ces indices, par exemple dans une boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for i = 1:numel(idx)
        Y(i) = max(X(idx+4:idx+6));
    end
    Duf

    P.S. Ce code est simpliste et peut largement être améliorer, mais je pense que le principe est là.
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 33
    Points : 10
    Points
    10
    Par défaut
    Merci ton aide!

    En fait le code me trouve bien 60 mais il me trouve encore 60 au lieu de 40 pour la seconde moyenne après mon second 100...

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
     idx = find(DATA_S1_T1 > 99);
     
      for i = 1:numel(idx)
        Y(i) = mean(DATA_S1_T1(idx+4:idx+6));
    end

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    idx = find(DATA_S1_T1 > 99);
      
    for i = 1:numel(idx)
        Y(i) = mean(DATA_S1_T1(idx(i)+4:idx(i)+6));
    end

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 33
    Points : 10
    Points
    10
    Par défaut
    Merci pour ton aide!!! Ca marche niquel.

    J'ai modifié mon code en ajoutant des boucles et tout marche bien. Malgré cela, je comprend pas tout dans mon code et comme je veux essayer de comprendre ce qu'il fait, je pose la question

    Je sais que :

    idx = find(DATA_S1_T1 > 99); me trouve les valeurs supérieures à 99 dans mon fichier


    que Y(i) = mean(DATA_S1_T1(idx(i)+4:idx(i)+6)); me fait la moyenne des valeurs qui se trouvent 4 5 et 6 lignes après ma valeur > 99 (idx)

    Par contre je sais pas à quoi correspond 1:numel .

    Si quelqu'un peut m'éclairer...

    Merci.

  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
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    c'est dans la documentation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >> doc :
    >> doc numel
    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 à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 33
    Points : 10
    Points
    10
    Par défaut
    Merci

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

Discussions similaires

  1. [Débutant] Trouvez String RichTextBox1 écrire les 6 prochaines lignes dans une variable
    Par YaMOo dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/07/2014, 22h27
  2. Ignorer les X premières lignes
    Par Laurent3131 dans le forum MATLAB
    Réponses: 22
    Dernier message: 19/04/2012, 18h10
  3. TStringGrid : ignorer les lignes vides lors d'un tri
    Par ddubois dans le forum Composants VCL
    Réponses: 8
    Dernier message: 14/05/2008, 13h56
  4. ETAT - Ignorer les sauts de ligne dans un champ mémo
    Par superseba888 dans le forum Access
    Réponses: 4
    Dernier message: 14/08/2006, 02h27
  5. [Sqlldr] Ignorer les lignes vides
    Par hubsm dans le forum SQL
    Réponses: 1
    Dernier message: 27/02/2006, 15h03

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