Bonjour à tous,
J'essaie de réaliser un algo inspiré du passage de l'article suivant :
En fait on recouvre le signal par des segments de taille M=2n+1. Et chaque segments recouvre son voisin sur n+1 points.We have devised a new local adaptive detrending algorithm with these properties. It first partitions a time series into segments (or windows) of length 2n + 1 points, where neighboring segments overlap by n+1 points. For each segment, we fit a best polynomial of order K.Denote the fitted
polynomials for the ith and (i+1)th segments by y(i)(l1), y(i+1)(l2), l1, l2 = 1, . . . , 2n+1,
respectively. Note that the length of the last segment may be smaller than 2n + 1. We define the trend for the overlapped region as
y(c)(l)=(1-(l-1)/n)*y(i)(l+n) + (l-1)/n*y(i+1)(l), l=1,2,..,n+1
Ensuite on crée le polynome Yc sur chaque intersection.
Ce qui m’étonne (voir m’énerve) c'est qu'au final le polynôme Yc que j'obtiens est plus long que le signal de base... Alors que normalement, avec la division euclidienne on devrait tomber sur une taille au moins plus petite.
Voici mon code :
seg : les segments qui recouvrent le signal input
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 load 'input.mat' n=50; M=2*n+1; Nseg=floor((length(input)-(2*n+1))/n); K=2; x=1:M;%taille d'un segment y l=1:n+1;%taille d'un segments de recouvrement Yc for i=1:Nseg seg(i,:)=input(1+(i-1)*n:(i-1)*n+M); P=polyfit(x,seg(i,:),K); y(i,:)=polyval(P,x); end %On construit 'the trend for the overlapped region' %Il s'applique sur chaque intersections de deux segments for i=1:Nseg-1 Yc(i,l)=y(i,l+n).*(1-(l-1)/n)+y(i+1,l).*(l-1)/n; end
y : estimation polynomiale sur chaque segment
Yc: estimation polynomiale sur les intersections de chaque segments
cependant la taille de Yc est plus grande que input ...
En gambergeant j'ai essayé de recenser
les points en trop:
*Le dernier point du ieme segment correspond au premier point du i+2e segment si on est d'accord.
les points qui manquent:
*Les L points constitués du nombre de points entre la fin du dernier segments et le nombre de point du signal.
Cependant ça ne fait pas le compte.
Voilà si vous avez la patience pour vous prendre la tête sur un problème de dénombrement comme celui là je vous serais extrêmement reconnaissant, sinon bonsoir !.
ps: je n'ai pas trouvé de balise latex, j'espere que c'est pas trop crade.
Partager