Bonjour, je viens vous demander votre avis et aide pour améliorer un morceau de mon code :

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
Ce code est très long à tourner !

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=
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
On à alors un vecteur delta :

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 10 représente dans ce que je souhaites faire après, un point abérant;
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