Bonjour, je viens vous demander votre avis et aide pour améliorer un morceau de mon code :
Ce code est très long à tourner !
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 k=1:29 [n,p]=size(deltaspreadint{k,1}(:,:)); for pp=n:-1:20 for o=1:p if isempty(find(deltaspreadint{k,1}(pp,o)==0))==1 && sum(deltaspreadint{k,1}((pp-10:pp-1),o))==0 deltaspreadint{k,1}(pp,o)=0; end end end end
Le but de la manipulation permet d'enlever les valeurs "abérantes" dans le calcul de delta (Xt+1-Xt). En effet lorsque Xt=0 on à un delta énorme, comparément aux autres valeurs.
Ce pronlème vient des valeurs manquantes dans ma série, qui sont remplacés par 0.
Imaginons un vecteur Xt=
On à alors un vecteur delta :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 0 0 0 0 0 10 11 12 13
Le 10 représente dans ce que je souhaites faire après, un point abérant;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 0 0 0 0 10 1 1 1
le code que j'ai présenté avant, cherche dans le vecteur si la valeur pp est non nulle si oui, et si les 10 valeurs avant sont nulles alors il considére que ce pp est à remplacé par 0.
Mais c'est très long, avait vous une idée de la façon de traiter ce problème ? merci
Partager