|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : septembre 2007 Messages : 54 ![]() |
Bonjour,
Quelqu'un pourrait-il m'aider? Je fais un postdoc en Neurosciences aux Pays-Bas et j'ai acquis dans le cadre de mon projet, des données issue de mouvement des yeux de sujets (signal electro-oculographique) tandis qu'ils participaient à une expérience. Et je dois dire que je parle mieux français que Matlab... Voici donc comment cela se présente: J'ai 2 fichiers: "Data.dat" et "markers.xls" (voir fichiers attachés). Le fichier "Data.dat" est beaucoup trop volumineux pour être ouvert en entier par excel ou pour etre envoye ici mais j'en ai attache un morceau dans un fichier excel pour que voyiez comment il se presente (fichier "Data.xls"). Le fichier : "Data.dat" contient 3 lignes de données et de nombreuses colonnes. La 1ère ligne ne m'intéresse pas pour le moment. La 2eme correspond aux mouvements verticaux des yeux et la 3eme aux mouvements horizontaux (en microvolts). Il y a énormément de colonnes car la fréquence d'échantillonnage est de 5000 Hz et que le fichier dure plus de 20 minutes ici. Le fichier "markers.xls" contient une colonne "markers", une colonne "time_mrk" et une colonne "Code". Il correspond aux clics et aux temps correspondants, de la personne qui a fait l'expérience. Le marker "S 1" désigne le début d'un essai de l'expérience et "S 2", sa fin. La colonne "Code" correspond a la condition de l'essai (8 conditions différentes en tout). Voici ce que je voudrais que Matlab me fasse: Tout d'abord, qu'il m'ajoute une ligne temps au fichier "Data.dat", qu'on pourrait appeler "time_dat" (comme sur la feuille 2 du fichier reduit Data.xls, en rouge). La première case de cette ligne doit vraiment comporter le terme "time_dat" et doit aller de 0.0002 secondes en 0.0002 secondes (car la fréquence est de 5000 Hz) jusqu'a la dernière colonne remplie du fichier. Mon fichier "Data.dat" comporte donc maintenant 4 lignes. Puis, dans le fichier "Data.dat", pour toutes les colonnes des lignes 3 et 4 (puisque la ligne qui ne m'intéresse pas est maintenant la numéro 2 après ajout de la ligne "time_dat"), si la valeur de la ligne 1 ("time_dat") correspondant au temps est égale à une des valeurs de la colonne "time_mrk" (fichier "markers.xls") plus ou moins 0.001 seconde, je veux que pour chaque intervalle de temps compris entre le temps correspondant a "S 1" et le temps correspondant a "S 2" (colonne "markers" du fichier "markers.xls"), Matlab me donne la valeur de mes Data des lignes 3 et 4 du fichier "Data.dat". Maintenant ces valeurs extraites, je veux que pour chacun des intervalles de temps "S 2" moins "S 1", Matlab: - Me donne la valeur max et la valeur min pour la ligne 3 et la ligne 4 du fichier "Data.dat". - Me calcule la moyenne de toutes les valeurs des lignes 3 et 4 de cet intervalle. - Me calcule la vitesse et l'accélération des données (lignes 3 et 4) de cet intervalle. - Me fasse la moyenne des valeurs max pour chacune des conditions de mon expérience (cf, colonne "Code" du fichier "markers.xls"). - Me fasse la moyenne des valeurs min pour chacune des conditions de mon expérience (cf, colonne "Code" du fichier "markers.xls"). - Me calcule pour chacune des conditions de mon expérience, la moyenne de la moyenne de toutes les valeurs des lignes 3 et 4. - Me calcule pour chacune des conditions de mon expérience, la vitesse et l'accélération des données (lignes 3 et 4) de cet intervalle. Voila. Je n'ai aucune idee de l'investissement que pourrait vous demander une telle demande mais si quelqu'un pouvait m'aider cela serait fortement apprecie. Merci beaucoup, Murielle |
|
|
00
|
|
|
#2 | ||||||
|
Invité de passage
![]() Inscription : septembre 2007 Messages : 54 ![]() |
Bonjour,
Bon, je m'apercois que ma requete a ete peut etre un peu ambitieuse... Du coup j'ai reussi a me depatouiller un peu toute seule mais je bloque sur quelque chose. J'ai un fichier excel qui ressemble a ca: Code :
Code :
J'ai essaye cela: Code :
Merci, Murielle |
||||||
|
|
00
|
|
|
#3 | ||
![]() ![]() Inscription : août 2007 Messages : 3 578 ![]() |
Bonjour,
Il existe plusieurs façons de faire, en voici une qui n'est peut-être pas très optimisé mais qui a le mérite de fonctionner : Code :
__________________
Pour une bonne utilisation des balises code c'est ici! Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sourcesLa nature est un livre écrit en langage mathématique. Galilée. |
||
|
|
00
|
|
|
#4 | |||
![]() ![]() Jérôme Inscription : septembre 2009 Messages : 3 593 ![]() |
Bonjour,
Une autre façon de faire: Code :
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider ![]() Une erreur? "Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).Citation:
|
|||
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : septembre 2007 Messages : 54 ![]() |
Merci a tous les 2!
J'avais continue a chercher un peu et j'etais arrivee a quelque chose de satisfaisant aussi avec ca: Code :
|
||
|
|
00
|
|
|
#6 | ||
![]() ![]() Inscription : août 2007 Messages : 3 578 ![]() |
Avec ton code, tu n'obtiens pas le même résultat que dans ton post #2, par exemple sur les 7 premières valeurs tu obtiens :
Citation:
Citation:
C(i+1)=1 et C(i)=1 et C(i+1)=0 et C(i)=0 dont la différence fait 0 dans les 2 cas.
__________________
Pour une bonne utilisation des balises code c'est ici! Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sourcesLa nature est un livre écrit en langage mathématique. Galilée. |
||
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Inscription : septembre 2007 Messages : 54 ![]() |
Oui, en effet Magelan. C'est pourquoi j'ai dit que ma methode etait satisfaisante mais pas parfaite. Donc vos methodes sont meilleures.
![]() Je bloque a nouveau sur quelque chose... ![]() J'ai un fichier de ce type: Code :
Par exemple, ici le premier intervalle comprendrait toutes les valeurs pour chacune des colonnes 2, 3 et 4 comprises dans l'intervalle 202.9 et 210.9. Le 2eme intervalle va de 214.1 et 227.8... etc Pourriez-vous m'aider? Merci, Murielle |
||
|
|
00
|
|
|
#8 | |
![]() ![]() Jérôme Inscription : septembre 2009 Messages : 3 593 ![]() |
Qu'as-tu essayé de coder?
Montre=nous ton code même s'il est faux.
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider ![]() Une erreur? "Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).Citation:
|
|
|
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() Inscription : septembre 2007 Messages : 54 ![]() |
Hmm, voila mon code mais il ne marche vraiment pas du tout...
Code :
Merci pour votre aide, Murielle |
||
|
|
00
|
|
|
#10 | |
![]() ![]() Jérôme Inscription : septembre 2009 Messages : 3 593 ![]() |
Avant de continuer, je te conseille de regarder la
Pourquoi 0.3-0.2-0.1 est-il différent de 0 ? en ce qui concerne la ligne Code :
while Data_int(h+1,1)-Data_int(h,1)==0.1
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider ![]() Une erreur? "Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).Citation:
|
|
|
|
00
|
|
|
#11 | ||
|
Invité de passage
![]() Inscription : septembre 2007 Messages : 54 ![]() |
Ok, merci du conseil.
Du coup, vu comme ca ne changera rien a mon résultat, j'ai supprime l’égalité comme ceci: Code :
Warning: Colon operands should not be logical. Merci, Murielle |
||
|
|
00
|
|
|
#12 | |
![]() ![]() Jérôme Inscription : septembre 2009 Messages : 3 593 ![]() |
Que cherches-tu à faire exactement avec
Code :
Data_int(h,1):(Data_int(h+1,1)-Data_int(h,1)>0,2) Ton Warning vient du fait que (Data_int(h+1,1)-Data_int(h,1)>0,2) est une valeur logique (0 ou 1). Ne souhaiterais-tu pas plutôt travailler sur des indices? Les fonctions DIFF et FIND pourraient se révéler utiles PS: Penses à indenter ton code, c'est beaucoup plus lisible. Ctrl+A, Ctrl+I sur ton éditeur MATLAB.
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider ![]() Une erreur? "Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).Citation:
|
|
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Inscription : septembre 2007 Messages : 54 ![]() |
Bonjour,
Desolee pour la reponse tardive. C'est parfois difficile d'expliquer ce qu'on cherche a faire avec un code, surtout apres 500 essais infructueux... Bref, j'ai pas mal tatonne et au final, j'ai reussi a avoir ce que je voulais! Merci pour les conseils. +++ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com