bonjour,
j'ai un petit souci je dois analyser un tableau de ce type :
un essais va donc de croix de fixation jusqu'à 1 réponse (oui ou non)
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 Type Temps Croix de fixation 1 actif 2 Delai2 3 Oui 4 Croix de fixation 5 actif 6 Delai2 7 Oui 8 Croix de fixation 9 actif 10 Delai1 11 Oui 12 Croix de fixation 13 actif 14 Delai0 15 non 16
je dois classer les essais et temps associés en fonction du délai,et de la réponse.
J'ai déjà réussi a les classer,cependant,je cherche une piste afin de le réaliser de façon plus propre de façon à ce que si j'ajoute plus de types de délais,ou autre chose que actif,le code ne soit pas si lourd :
ici je poste une de mes autres piste de réflexion, mais, je bloque au niveau de la boucle,de plus,je doute que ce soit tellement moins court
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 %on commence par créer les matrices qui vont contenir les tout les temps de %chaque essais en fonction de la réponse et du délais %le nombre de lignes dans le fichier log (multiples de 4) donné par la %fonction: n=length(NUM); %création de matrice vides qui vont contenir les temps de tout les essais %pour chaque conditions mat1=[]; mat2=[]; mat3=[]; mat4=[]; mat5=[]; mat6=[]; for i=1:n %on ennonce les condition nessecaire pour remplir les matrices afin que %les temps aillent dans les bonnes matrices if strcmp(TXT(i,1),'actif')==1 & strcmp(TXT(i+1),'Delai0')==1 & strcmp(TXT(i+2),'Oui')==1; g=[NUM(i-1) NUM(i) NUM(i+1) NUM(i+2)]; mat1=[mat1;g]; elseif strcmp(TXT(i,1),'actif')==1 & strcmp(TXT(i+1),'Delai0')==1 & strcmp(TXT(i+2),'non')==1; g=[NUM(i-1) NUM(i) NUM(i+1) NUM(i+2)]; mat2=[mat2;g]; elseif strcmp(TXT(i,1),'actif')==1 & strcmp(TXT(i+1),'Delai1')==1 & strcmp(TXT(i+2),'Oui')==1; g=[NUM(i-1) NUM(i) NUM(i+1) NUM(i+2)]; mat3=[mat3;g]; elseif strcmp(TXT(i,1),'actif')==1 & strcmp(TXT(i+1),'Delai1')==1 & strcmp(TXT(i+2),'non')==1; g=[NUM(i-1) NUM(i) NUM(i+1) NUM(i+2)]; mat4=[mat4; g]; elseif strcmp(TXT(i,1),'actif')==1 & strcmp(TXT(i+1),'Delai2')==1 & strcmp(TXT(i+2),'Oui')==1; actifdelai2oui=[NUM(i-1) NUM(i) NUM(i+1) NUM(i+2)]; mat5=[mat5;g]; elseif strcmp(TXT(i,1),'actif')==1 & strcmp(TXT(i+1),'Delai2')==1 & strcmp(TXT(i+2),'non')==1; g=[NUM(i-1) NUM(i) NUM(i+1) NUM(i+2)]; mat6=[mat6;g]; else; end; end;
on m'a fourni quelques pistes pour la boucle utilisant la fonction eval, ceci dit d'après ce que j'ai lu de cette fonction sur le forum,elle est à priori à éviter(de plus,j'ai du mal à saisir sa véritable utilité, ou la façon dont elle fonctionnne)
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
18
19
20
21 % trier les conditions debutessai = find(((strcmp(TXT(:,1),'Croix de fixation'))==1)); condition = find(((strcmp(TXT(:,1),'actif'))==1)); delai = find(((strcmp(TXT(:,1),'Delai0'))==1)|((strcmp(TXT(:,1),'Delai1'))==1)|((strcmp(TXT(:,1),'Delai2'))==1)); reponse1 = find(((strcmp(TXT(:,1),'Oui'))==1)|((strcmp(TXT(:,1),'non'))==1)); TrialsB = NUM(debutessai,1); TrialsE = NUM(reponse1,1); delais(find((strcmp(TXT(delai,1),'Delai0'))==1),1)=1; delais(find((strcmp(TXT(delai,1),'Delai1'))==1),1)=2; delais(find((strcmp(TXT(delai,1),'Delai2'))==1),1)=3; rep1(find((strcmp(TXT(reponse1,1),'Oui'))==1))=1; rep1(find((strcmp(TXT(reponse1,1),'non'))==1))=2; delays=['delai0';'delai1';'delai2']; reps=['detecte';'nondete'] for delay = 1:3; for rep = 1:2; end; end;
Merci en espérant que mon sujet soit assez clair
et que ma façon de programmer ne rende pas aveugle un utilisateur de matlab expérimenté
Partager