Précédent   Forum des professionnels en informatique > Environnements de développement > MATLAB > Signal
Signal Forum d'entraide sur le traitement du signal en MATLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/10/2011, 14h55   #1
Invité de passage
 
Inscription : septembre 2007
Messages : 54
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 54
Points : 4
Points : 4
Par défaut Aide pour script traitant du signal electro-oculographique

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... Je me demandais si quelqu'un pourrait traduire pour moi en langage Matlab ce que je voudrais que Matlab me fasse, a partir d'une explication en français... Je suis bien consciente que la charte n'encourage pas ce genre de pratique mais j'ai le sentiment que cela me prendrait 3 mois alors que ca pourrait peut-être être fait très rapidement par l'un d'entre vous.

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
Fichiers attachés
Type de fichier : xls markers.xls (27,5 Ko, 0 affichages)
Type de fichier : xls Data.xls (19,0 Ko, 0 affichages)
Muriellle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 10h54   #2
Invité de passage
 
Inscription : septembre 2007
Messages : 54
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 54
Points : 4
Points : 4
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 :
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
40
0.1	-3270	117.9	270.8	0
0.2	-3280	120.9	267.9	0
0.3	-3270	124.1	285.8	1
0.4	-3280	261.6	204.3	0
0.5	-3270	251.4	203.9	0
0.6	-3270	246.4	203.1	1
0.7	-3260	243.7	189.3	0
0.8	-3280	243.5	190.3	0
0.9	-3280	255.2	188.2	0
1	-3290	236.7	191.4	0
1.1	-3270	281	195.2	1
1.2	-3280	274.9	226.7	0
1.3	-3270	215	237.6	0
1.4	-3280	102.1	325.1	0
1.5	-3270	113.7	326	0
1.6	-3280	103.8	344.6	0
1.7	-3270	107.7	337.4	0
1.8	-3280	105.9	327.3	1
1.9	-3270	109.4	332	0
2	-3280	102.2	336.8	0
2.1	-3260	113	339.3	1
2.2	-3270	108.9	336.2	0
2.3	-3260	132.7	315.6	0
2.4	-3280	123.8	311.7	0
2.5	-3270	131.9	317.4	0
2.6	-3270	123.8	312.5	1
2.7	-3280	130.9	304.1	0
2.8	-3290	315.9	295.3	0
2.9	-3290	195.4	293.9	0
3	-3290	172.4	295.8	1
3.1	-3280	178.8	294.6	0
3.2	-3280	166.3	306.4	0
3.3	-3280	178.2	332.1	0
3.4	-3290	192.5	335.1	0
3.5	-3280	182.1	306.5	0
3.6	-3290	212.5	234.9	1
3.7	-3290	218.4	233	0
3.8	-3290	369.5	183.2	0
3.9	-3280	301.3	204.7	0
Et je voudrais que Matlab me cree une colonne supplementaire en remplacant une fois sur 2, les "0" entre deux "1" (dans la 5eme colonne), par des "1" comme cela:

Code :
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
40
0.1	-3270	117.9	270.8	0 0
0.2	-3280	120.9	267.9	0 0
0.3	-3270	124.1	285.8	1 1
0.4	-3280	261.6	204.3	0 1
0.5	-3270	251.4	203.9	0 1
0.6	-3270	246.4	203.1	1 1
0.7	-3260	243.7	189.3	0 0
0.8	-3280	243.5	190.3	0 0
0.9	-3280	255.2	188.2	0 0
1	-3290	236.7	191.4	0 0
1.1	-3270	281	195.2	1 1
1.2	-3280	274.9	226.7	0 1
1.3	-3270	215	237.6	0 1
1.4	-3280	102.1	325.1	0 1
1.5	-3270	113.7	326	0 1
1.6	-3280	103.8	344.6	0 1
1.7	-3270	107.7	337.4	0 1
1.8	-3280	105.9	327.3	1 1
1.9	-3270	109.4	332	0 0
2	-3280	102.2	336.8	0 0
2.1	-3260	113	339.3	1 1
2.2	-3270	108.9	336.2	0 1
2.3	-3260	132.7	315.6	0 1
2.4	-3280	123.8	311.7	0 1
2.5	-3270	131.9	317.4	0 1
2.6	-3270	123.8	312.5	1 1
2.7	-3280	130.9	304.1	0 0
2.8	-3290	315.9	295.3	0 0
2.9	-3290	195.4	293.9	0 0
3	-3290	172.4	295.8	1 1
3.1	-3280	178.8	294.6	0 1
3.2	-3280	166.3	306.4	0 1
3.3	-3280	178.2	332.1	0 1
3.4	-3290	192.5	335.1	0 1
3.5	-3280	182.1	306.5	0 1
3.6	-3290	212.5	234.9	1 1
3.7	-3290	218.4	233	0 0
3.8	-3290	369.5	183.2	0 0
3.9	-3280	301.3	204.7	0 0
Cela est-il possible?

J'ai essaye cela:
Code :
1
2
3
4
5
for i=1:(length(C))-1
    if C(i+1,1)-C(i,1)>0
     C(i,1)=1
    end
end
Mais je n'obtiens pas ce que je veux... Quelqu'un saurait-il m'aider?

Merci,
Murielle
Muriellle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 14h06   #3
Modérateur
 
Inscription : août 2007
Messages : 3 578
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 3 578
Points : 4 403
Points : 4 403
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 :
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
40
41
42
43
44
45
46
47
48
49
50
51
52
C = [0.1	-3270	117.9	270.8	0
0.2	-3280	120.9	267.9	0
0.3	-3270	124.1	285.8	1
0.4	-3280	261.6	204.3	0
0.5	-3270	251.4	203.9	0
0.6	-3270	246.4	203.1	1
0.7	-3260	243.7	189.3	0
0.8	-3280	243.5	190.3	0
0.9	-3280	255.2	188.2	0
1	-3290	236.7	191.4	0
1.1	-3270	281	195.2	1
1.2	-3280	274.9	226.7	0
1.3	-3270	215	237.6	0
1.4	-3280	102.1	325.1	0
1.5	-3270	113.7	326	0
1.6	-3280	103.8	344.6	0
1.7	-3270	107.7	337.4	0
1.8	-3280	105.9	327.3	1
1.9	-3270	109.4	332	0
2	-3280	102.2	336.8	0
2.1	-3260	113	339.3	1
2.2	-3270	108.9	336.2	0
2.3	-3260	132.7	315.6	0
2.4	-3280	123.8	311.7	0
2.5	-3270	131.9	317.4	0
2.6	-3270	123.8	312.5	1
2.7	-3280	130.9	304.1	0
2.8	-3290	315.9	295.3	0
2.9	-3290	195.4	293.9	0
3	-3290	172.4	295.8	1
3.1	-3280	178.8	294.6	0
3.2	-3280	166.3	306.4	0
3.3	-3280	178.2	332.1	0
3.4	-3290	192.5	335.1	0
3.5	-3280	182.1	306.5	0
3.6	-3290	212.5	234.9	1
3.7	-3290	218.4	233	0
3.8	-3290	369.5	183.2	0
3.9	-3280	301.3	204.7	0];

C(:,6) = 0;
if C(1,5)==1
    C(1,6)=1;
end
for i=2:(size(C,1))
    if C(i,5)==1 
        C(i,6)=~C(i-1,6);
    else
        C(i,6)=C(i-1,6);
    end
end
C(C(:,5)==1,6) = 1;
__________________
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.
magelan est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 15h01   #4
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 3 593
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2009
Messages : 3 593
Points : 6 813
Points : 6 813
Bonjour,


Une autre façon de faire:
Code :
1
2
3
4
5
6
7
8
9
flag = 0;
for i=1:size(C,1)
    if C(i,5)
        flag = 1-flag;
        C(i,6) = 1;
    else
        C(i,6) = flag;
    end
end
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider
Une erreur? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Je suis régulièrement sur le chat DVP - Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 16h27   #5
Invité de passage
 
Inscription : septembre 2007
Messages : 54
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 54
Points : 4
Points : 4
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 :
1
2
3
4
5
6
for i=1:(length(C))-1;
    if C(i+1,1)-C(i,1)~=0;
     C(i+1,1)=1;
    else C(i+1,1)=0;
    end
end
Muriellle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 17h12   #6
Modérateur
 
Inscription : août 2007
Messages : 3 578
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 3 578
Points : 4 403
Points : 4 403
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:
0
0
1
1
1
0
0
au lieu de :
Citation:
0
0
1
1
1
1
0
Car tu ne distinques pas les cas
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 sources


La nature est un livre écrit en langage mathématique. Galilée.
magelan est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 10h17   #7
Invité de passage
 
Inscription : septembre 2007
Messages : 54
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 54
Points : 4
Points : 4
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 :
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
202.9	-3280	1159.6	183.8
203	-3270	1062.5	165.1
203.1	-3280	982.8	146.3
203.2	-3260	990.3	138.8
203.3	-3290	941.5	138.6
203.4	-3270	826.8	149.1
203.5	-3280	750.7	158.4
203.6	-3270	759.6	161.3
203.7	-3280	725.4	182.3
203.8	-3280	678.4	179.8
203.9	-3280	732.2	179.8
204	-3280	726.3	187.5
204.1	-3280	731.1	170
204.2	-3280	699	146.8
204.3	-3280	656.7	160.9
204.4	-3290	658.9	199.4
204.5	-3290	606.1	196.5
204.6	-3280	603.2	177.7
204.7	-3300	565.3	176
204.8	-3280	522.3	157.3
204.9	-3300	461.1	163.7
205	-3280	524.8	188.1
205.1	-3290	473.5	210.8
205.2	-3280	498.2	217.1
205.3	-3300	496.6	253.4
205.4	-3290	555.5	242.2
205.5	-3290	564.8	229.7
205.6	-3280	575.7	240.2
205.7	-3290	610.1	251.1
205.8	-3280	560.5	214.5
205.9	-3300	631.3	204
206	-3270	599.1	217
206.1	-3290	542.8	208.3
206.2	-3280	507.7	169
206.3	-3290	463.1	194.4
206.4	-3290	472.4	171.1
206.5	-3290	451.8	183.1
206.6	-3270	580.7	173.1
206.7	-3270	596.7	186.8
206.8	-3280	545.6	198.7
206.9	-3290	531.7	148.3
207	-3290	506.1	84.8
207.1	-3280	490.7	70.5
207.2	-3280	476.1	67.4
207.3	-3300	487.9	79.3
207.4	-3270	512.1	107.9
207.5	-3290	549.9	98.8
207.6	-3280	531.6	94.1
207.7	-3290	523.8	98.6
207.8	-3280	606.9	136.8
207.9	-3280	568.3	134.9
208	-3280	579.3	155.1
208.1	-3280	625.9	154.8
208.2	-3270	694.1	161.3
208.3	-3290	732.4	175.5
208.4	-3280	708.8	158.3
208.5	-3280	644.3	164.8
208.6	-3270	625.5	159
208.7	-3270	640	150.9
208.8	-3260	556.7	147.2
208.9	-3270	511.5	152.6
209	-3270	487.2	159.7
209.1	-3290	542.2	168.4
209.2	-3270	488.9	153.6
209.3	-3280	515.4	161.1
209.4	-3280	505.3	154.3
209.5	-3280	471.9	146.6
209.6	-3270	562.6	151.4
209.7	-3280	558.6	197.6
209.8	-3270	570.9	191.9
209.9	-3270	527.3	136.4
210	-3270	578.2	150.5
210.1	-3280	567.1	188.6
210.2	-3280	579.4	209.2
210.3	-3280	575.4	202.8
210.4	-3280	523.9	214.5
210.5	-3290	529.7	232.9
210.6	-3280	493.5	206
210.7	-3290	484.1	212.9
210.8	-3280	529.4	212
210.9	-3290	533.4	198.9
214.1	-3310	849.3	357
214.2	-3300	938.5	315.7
214.3	-3310	908.7	312.6
214.4	-3320	921.2	325.1
214.5	-3330	887.6	324.3
214.6	-3310	823	306.9
214.7	-3310	783.5	300.2
214.8	-3310	768	276.8
214.9	-3310	718.1	245.5
215	-3300	655.7	217.1
215.1	-3320	631.7	251.5
215.2	-3300	619.1	240.2
215.3	-3320	577.2	245.5
215.4	-3310	588.4	245.9
215.5	-3310	605.9	230.9
215.6	-3310	523.2	268.5
215.7	-3310	504.5	261
215.8	-3300	512.6	261
215.9	-3300	526.5	248.3
216	-3300	479.1	289
216.1	-3310	453.5	261.5
216.2	-3300	387.5	273.4
216.3	-3290	403.8	263.9
216.4	-3300	429.4	267.8
216.5	-3310	431.5	246.8
216.6	-3310	430	270
216.7	-3310	419.8	271.2
216.8	-3310	385.7	278.4
216.9	-3310	397.6	254.3
217	-3300	335.4	263.3
217.1	-3300	393.8	262.7
217.2	-3290	491.3	242.7
217.3	-3310	610.4	231.5
217.4	-3310	573.3	228.9
217.5	-3310	533.9	223.9
217.6	-3300	472.4	234
217.7	-3310	377.7	216
217.8	-3320	397.1	207.3
217.9	-3300	344.7	186.1
218	-3290	402.9	212.8
218.1	-3310	473.7	222.5
218.2	-3310	438.6	207.1
218.3	-3320	464.6	237.8
218.4	-3300	424.8	241.9
218.5	-3320	427.5	239.4
218.6	-3300	432.3	246
218.7	-3310	371.6	202.4
218.8	-3300	381.6	209.7
218.9	-3310	376.2	235.4
219	-3290	413.1	252
219.1	-3310	397.3	252.1
219.2	-3300	450.7	223.6
219.3	-3300	380.5	262.7
219.4	-3290	377.9	242.1
219.5	-3300	396.3	240.3
219.6	-3280	356.6	250.1
219.7	-3290	356.5	248.6
219.8	-3290	379.2	254.4
219.9	-3290	339.4	256.1
220	-3300	349.6	261.8
220.1	-3290	339.3	280.9
220.2	-3290	336.9	267.9
220.3	-3290	326.9	263.4
220.4	-3280	341.7	275.5
220.5	-3300	336.3	272.4
220.6	-3290	342.8	255
220.7	-3300	337.7	255.9
220.8	-3300	364.3	283.8
220.9	-3300	416.6	291.1
221	-3290	402.5	279.1
221.1	-3300	522	271.2
221.2	-3290	455.2	265.4
221.3	-3290	474.7	271.2
221.4	-3290	474.7	292.1
221.5	-3300	455.3	290.8
221.6	-3280	457.8	301.5
221.7	-3300	448.1	293.4
221.8	-3290	495.3	302.8
221.9	-3290	489.7	322.6
222	-3270	451.2	339.9
222.1	-3290	522.5	329
222.2	-3280	489.1	284.5
222.3	-3290	549.6	291.9
222.4	-3280	502.3	308.8
222.5	-3290	438.7	304.3
222.6	-3290	435	291.6
222.7	-3290	503.8	312.4
222.8	-3280	534.6	322
222.9	-3280	533.1	318.5
223	-3280	516.7	300.6
223.1	-3290	564.4	321.6
223.2	-3290	539	352.6
223.3	-3300	559.7	336.8
223.4	-3280	525.3	325.7
223.5	-3300	550.9	321.8
223.6	-3280	538.8	322
223.7	-3300	608.9	325.5
223.8	-3270	627.2	326.5
223.9	-3290	600.6	320.3
224	-3280	605.5	324.4
224.1	-3280	602.2	317.9
224.2	-3280	563.8	311.9
224.3	-3300	582.9	292.6
224.4	-3290	596.3	282.3
224.5	-3300	573.7	290.5
224.6	-3290	569	293.1
224.7	-3290	462.4	253
224.8	-3280	449.3	260.2
224.9	-3290	456.7	233.7
225	-3280	463.3	244.9
225.1	-3280	471	253.9
225.2	-3290	492.4	259.9
225.3	-3290	469	265.3
225.4	-3280	440	257.7
225.5	-3300	364.8	251.7
225.6	-3270	377.2	243.2
225.7	-3280	340.5	251.7
225.8	-3280	409.6	268.2
225.9	-3290	394.4	263
226	-3280	430.8	264.5
226.1	-3290	443.1	223.6
226.2	-3280	408.6	217.6
226.3	-3280	411.1	219.5
226.4	-3280	400.2	194.1
226.5	-3280	359	249.3
226.6	-3280	353.8	216.6
226.7	-3280	378.2	208.8
226.8	-3280	367.9	224.7
226.9	-3280	369.3	227.7
227	-3280	280	217.2
227.1	-3270	286.6	216.5
227.2	-3270	333.6	228.9
227.3	-3280	318	211.4
227.4	-3260	321.9	218
227.5	-3280	356.8	219.9
227.6	-3270	331.1	246.9
227.7	-3290	310.3	235
227.8	-3260	397.3	242.5
233.4	-3300	833.8	289.3
233.5	-3310	751.7	216.8
233.6	-3280	758.2	263.7
233.7	-3310	691.4	249.6
233.8	-3300	699.7	275.7
233.9	-3310	650.1	281.3
234	-3300	641.4	257.6
Et je voudrais que tant que la difference entre la valeur n et la valeur n-1 de la premiere colonne est egale a 0.1, Matlab me calcul la moyenne des valeurs de la colonne 2, de la colonne 3 et de la colonne 4 pour l'intervalle en question.
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
Muriellle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 10h44   #8
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 3 593
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2009
Messages : 3 593
Points : 6 813
Points : 6 813
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? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Je suis régulièrement sur le chat DVP - Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 11h00   #9
Invité de passage
 
Inscription : septembre 2007
Messages : 54
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 54
Points : 4
Points : 4
Hmm, voila mon code mais il ne marche vraiment pas du tout...

Code :
1
2
3
4
5
6
R=nan(size(markers(:,1)))/2;
for h = 1:(length(Data_int))-1
    while Data_int(h+1,1)-Data_int(h,1)==0.1
        R=mean(Data_int(h,1):(Data_int(h+1,1)-Data_int(h,1)>0,1))
    end
end
Data_int est le nom du fichier a 4 colonnes. Et R est un vecteur de 80 lignes car c'est le nombre de moyennes que je suis censée obtenir.

Merci pour votre aide,
Murielle
Muriellle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 11h10   #10
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 3 593
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2009
Messages : 3 593
Points : 6 813
Points : 6 813
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? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Je suis régulièrement sur le chat DVP - Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 11h27   #11
Invité de passage
 
Inscription : septembre 2007
Messages : 54
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 54
Points : 4
Points : 4
Ok, merci du conseil.

Du coup, vu comme ca ne changera rien a mon résultat, j'ai supprime l’égalité comme ceci:

Code :
1
2
3
4
5
6
R=nan(size(markers(:,1)))/2;
for h = 1:(length(Data_int))-1
    while Data_int(h+1,1)-Data_int(h,1)<0.2
        R=mean(Data_int(h,1):(Data_int(h+1,1)-Data_int(h,1)>0,2))
    end
end
Mais j'obtiens le message
Warning: Colon operands should not be logical.
Qu'est-ce qui ne va pas dans mon code?

Merci,
Murielle
Muriellle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 11h36   #12
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 3 593
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2009
Messages : 3 593
Points : 6 813
Points : 6 813
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? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Je suis régulièrement sur le chat DVP - Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 10h22   #13
Invité de passage
 
Inscription : septembre 2007
Messages : 54
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 54
Points : 4
Points : 4
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.

+++
Muriellle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h21.


 
 
 
 
Partenaires

Hébergement Web