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 :

Écriture d'un script simple avec boucles [Débutant]


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Par défaut Écriture d'un script simple avec boucles
    Bonjour à tous!

    J'ai quelques difficultés à mettre en place un petit script sous Matlab. Je suis tout jeune débutant sur ce logiciel et je viens donc vous demander une petite aide. Voici ce que j'aimerai faire : j'ai un fichier de données avec des durées de présences ou d'absences à différents temps d'observation pour plusieurs individus (au total 20).
    Exemple:
    T1 : 5sec
    T2 : 0sec
    T3 : 60sec
    T4 : 45sec
    T5 : 0sec
    etc.

    Je formule l’hypothèse que si l’individu est présent à t1 et t2 il l’a été de manière continue entre t1 et t2 ; si il est présent à t1, t2 et t3 : il a tjs été présent entre t1 et t3

    Je commences à t0 : hors zone
    Première durée d(1)=0
    Temps 1
    Si temps 1 =0 je passe au temps suivant
    Si temps 1= une valeur sup. à 0, alors première durée est mise à delta T (intervalle entre deux mesures)

    On passe à temps 2
    Si à temps 2=0 alors on stop la durée 1 et on initialise d(2)=0
    Si à temps 2 présence, alors d(1) est augmenté de delta t

    Etc

    d(1)=0
    indice de la durée j=1
    boucle sur les temps i= 1, dernière observation (ici 60)
    si présence(1)=0 alors passer au temps suivant : j=j+1
    si présence (1)=1 d(1)=d(1)+delta temps

    A la fin, j'ai un ensemble de n durées : d(1),d(2),….d(n).

    Merci pour votre aide.

    Julien

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Par défaut
    Bonjour,

    J'avoue avoir du relire quelques fois ton posts pour cerner ta demande, ce n'est pas des plus limpides!

    La première question est: as-tu une première ébauche de script? L'objectif ici serait de le corriger, de l'enrichir, de le compléter et non pas a priori te donner le script tout fait.
    Seconde interrogation: Si n correspond au nombre de temps T, je ne vois pas pourquoi, au vue de tes explications, il y aurait n durées puisque plusieurs T successifs avec présence correspondront à une unique durée enrichie de tes delta T.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Par défaut
    Bonjour Gooby!

    Désolé pour ce discours peu limpide...pas facile d'écrire simplement ce que j'aimerai.

    Je n'ai pour l'instant rien commencer quand à l'écriture du script.
    En fait il peu y'avoir plusieurs d car dès qu'à un instant t il y'a absence on passe au d suivant. Ex : t1=5s, t2=3s, t4=0s, t5=45s, t6=10s... alors d(1)=7 (ie 5+ (5-3)), on stoppe d(1) car t4=0 donc on initialise d(2)=80s etc.

    Merci.

    Julien

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Par défaut
    Peux tu nous donner avec exactitude quelle est la forme de ton tableau de données? sur MATLAB si tu l'as déjà importé, sur excel sinon. Ton problème n'a pas l'air très compliqué pour mon niveau de connaissance MATLAB. ça doit être faisable avec des boucles for.

    Si tu n'as aucune idée de comment démarrer, je peux déjà te donner une première piste de démarrage

    Il faudra donc que tu utilises, par exemple, une boucle pour i allant de 1 à la longueur de T.
    Une première initialisation, du genre d(1) = T(1);
    compteur = 1;

    puis des boucles de condition: si T(i) ~= 0
    alors on fait d(compteur) = d(compteur) + d(compteur)-T(i)

    tandis que si T(i) = 0
    on fera compteur = compteur+1;

    C'est incomplet mais ça peut t'aider déjà à poser la base, essaies de construire quelques chose et reviens quand tu auras une première ébauche, même approximative!

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Par défaut
    Hello Gooby!

    Désolé pour ce long moment d'attente (un peu débordé). Je copie-colle le bout de script que j'ai commencé d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    %% Première partie - Importation du jeu de données
     
    d =dataset('xlsfile','duree.xls');
     
    %% Seconde partie - Mise en place de la boucle
     
     
     
    j=1;                    % indice de la durée
    for i=1:60;             % boucle de 1 à la dernière observation
      if T(i)~= 0
         d(j)= d(j)-(d(j)+T(i))
      else 
        T(i)=0
        j= j+1
      end
    end
    Merci encore pour ton aide.

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Par défaut
    Bonjour

    Un premier conseil, vas faire un tour ici

    Ensuite les quelques petites choses que je vois au premier coup d'oeil sont

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    j=1;                    % indice de la durée
    for i=1:length(T);             % pour être sûr de parcourir tout ton vecteur!
      if T(i)~= 0
         d(j)= d(j)+(d(j)-T(i))
      elseif T(i)=0       % un else seul suffirait car soit T(i)~=0 ou soit T(i)=0, il n'y a pas d'autres cas possibles!
        j= j+1
      end
    end

    Qu'obtiens-tu lorsque tu exécutes ce premier script?

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Par défaut
    Citation Envoyé par julienboulay Voir le message

    Je n'ai pour l'instant rien commencer quand à l'écriture du script.
    En fait il peu y'avoir plusieurs d car dès qu'à un instant t il y'a absence on passe au d suivant. Ex : t1=5s, t2=3s, t4=0s, t5=45s, t6=10s... alors d(1)=7 (ie 5+ (5-3)), on stoppe d(1) car t4=0 donc on initialise d(2)=80s etc.
    A priori de ce que j'ai compris de ton objectif, ce n'est en effet pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d(j,individu) = d(j,individu)+(d(j,individu)-T(i,individu));
    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d(j,individu) = d(j,individu)-(d(j,individu)-T(i,individu));
    Je n'ai cependant pas compris ici d'où sortirait le d2=80s?

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Par défaut
    Merci bcp Goony ! Tu m'as bien aidé !

    Une dernière petite demande. Peux t on rajouter une ligne de code qui ferait que je n'ai pas à relancer le script plusieurs fois (une fois pour chaque individu) ?

    Merci encore.

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Par défaut
    Comment sont classés tes individus? c'est un fichier à importer par individu?

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

Discussions similaires

  1. selection et écriture de données sous condition avec boucle
    Par braquin dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/08/2011, 09h16
  2. script fonctionne avec Firefox mais boucle sous IE6
    Par ignitionflip dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 28/01/2009, 16h10
  3. Script tout simple avec GreaseMonkey
    Par jpascal dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/06/2007, 11h25
  4. script avec boucle for
    Par gloglo dans le forum Langage SQL
    Réponses: 16
    Dernier message: 30/05/2007, 14h30
  5. [AJAX] faire tourner un script php en boucle avec ajax
    Par mitmit dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/05/2007, 10h33

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