Bonjour à tous,
J'ai effectué un enregistrement de données avec deux instruments différents: l'un un voltmètre, l'autre une étuve en température. Problème: les données ne sont pas synchronisées, et j'obtiens n'importe quoi en plottant. On s'autorise des erreur de quelques secondes (variation en température lente sur plusieurs heures acquisition).
Voici mon type de données:
J'aimerai les synchroniser ainsi:
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 t_acquisition valeur temperature t_temperature 2 2,3 20.1 1 3 8 20.2 2 4 4,1 20.2 3 6 6,3 20.2 4 7 7,8 20.2 5 8 6,2 20.2 6 9 1,1 20.2 7 10 2,7 20.2 8 11 7,9 20.3 9 12 8,5 20.3 10 14 4,3 20.3 11 15 3,2 20.3 12 16 0,2 20.3 13 17 4,7 20.3 14 18 6,3 20.3 15 19 4,7 20.3 16 20 4,8 20.4 17
En fait, si le temps d'acquisition de l'instrument correspond au temps de l'étuve, en copie la valeur. Sinon, on va chercher la valeur associée la plus proche et on la copie. Si elle n'existe pas, on prend la suivante.
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 t_temperature valeur_s 1 2,3 2 2,3 3 8 4 4,1 5 6,3 6 6,3 7 7,8 8 6,2 9 1,1 10 2,7 11 7,9 12 8,5 13 4,3 14 4,3 15 3,2 16 0,2 17 4,7
Exemple:1) pour trouver valeur_s à t_temperature = 16s, on va chercher 16 dans t_acquisition, et on la copie.
2)pour trouver valeur_s à t_temperature = 5s, on va chercher 5 dans t_acquisition, mais elle n'existe pas, on prend donc la valeur associé à t_acquisition = 6
A(i) est une copie de t_acquisition, mais avec des NaN si la valeur t_acquisition n'apparait pas (par exemple 5s)
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 for i=1:length(t_temperature) for j=1:length(t_acquisition) if(t_temperature(i) == t_acquisition(j)) valeur_s(i) = valeur(i); end if (t_acquisition ~= t_temperature) if(isnan(A(i)==0)) valeur_s(i) = valeur(A(i)); else valeur_s(i) = valeur(A(i+1)); end end end end
Est-ce clair?
Savez-vous comment faire pour résoudre le problème?
Je vous remercie
Partager