Detrending algorithme et nombre de points
Bonjour à tous,
J'essaie de réaliser un algo inspiré du passage de l'article suivant :
Citation:
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
En fait on recouvre le signal par des segments de taille M=2n+1. Et chaque segments recouvre son voisin sur n+1 points.
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 :
Code:
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 |
seg : les segments qui recouvrent le signal input
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.