Bonjour bonjour,
je tiens à solliciter votre aide encore fois ! voilà, je voudrais filtrer des données afin d'obtenir des résultats qu'on pourrait utiliser parce qu'avec ce que je travail y a trop de bruits et ce n'est pas l'idéale si on veut les interpréter![]()
donc je vous montre vite fais. ça c'est les positions en x y z , vous voyez que le Z n'arrête pas de faire des pics en bas.
ce qui nous donne un résultat un peu médiocre :
![]()
ce que j'ai essayé de faire est simple : comparer les valeur Z(i+1) et Z(i) si Z(i+1) est grand 2 fois Z(i) alors on affecte Z(i) à Z(i+1) sinon rien et on réitère jusqu'à length(z)-1 comme ça ça sera plus linéaire, m'enfin je crois que c'est l'idée ... ^^ je vous montre le code :
voilà c'est ça en gros, mais en fait j'ai pas eu ce que je voulais, c'est devenu juste un peu carré ... :/ si quelqu'un me propose une amélioration ou si y a une meilleur idée ça serait magique
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 function [ DP ] = Func_delta_Pos(value_marker) %Crée des variables dynamiques pour les X,Y,Z =>Position & calcul distance for i = 1:1:10 %Avec 10 marqueurs_ X(:,(i) )= value_marker.(['Marker' num2str(i, '%02d')]).value(:,1); Y(:,(i)) = value_marker.(['Marker' num2str(i, '%02d')]).value(:,2); Z(:,(i)) = value_marker.(['Marker' num2str(i, '%02d')]).value(:,3); end %%reconstruire les données (++100 --100) limit = 100; X=X(limit:1:length(X)-limit,:); Y=Y(limit:1:length(Y)-limit,:); Z=Z(limit:1:length(Z)-limit,:); for k=1:1:10 for i = 2:(length(X)-1) delta_z(i,k)=Z(i,k)-Z(i-1,k); if i > 1 if delta_z(i,k) > 2*(delta_z(i-1,k)) Z(i,k)=Z(i-1,k); Y(i,k)=Y(i-1,k); X(i,k)=X(i-1,k); end end end end DP.delta_z=delta_z; DP.X=X; DP.Y=Y; DP.Z=Z; end![]()
Partager