Bonjour,

voilà j'ai dans 2 vecteurs mon signal réel mesuré dans le temps par mon capteur et dans le second le modèle théorique. Ces deux signaux sont légèrement décalés et je cherche donc à les recaler. Pour ce faire, j'utilise la convolution et je relève l'indice du maximum de convolution. Voici mon algorithme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
for i=1:nb_jour
    data(i,:) = donnee(start:stop,1); % données sur 1 journée
    ref(i,:) = reference(start:stop,1); % modèle théorique sur 1 journée
    c(i,:) = cconv(data(i,:),ref(i,:),1440); % calcul de la convolution circulaire
    m = max(c(i,:)); % détection du maximum de convolution
    id = find(c(i,:) == m); % recherche de l'indice du maximum de convolution
    start = start + 1440;
    stop = stop + 1440;
end
Maintenant que j'ai l'indice du maximum de convolution, je sais de combien d'échantillon il faut que je décale mon signal pour qu'il soit correctement calé par rapport à la courbe théorique. Mon problème: comment faire ce décalage circulairement, je veux dire que si je décide de décaler mes données de 3 échantillons vers la "gauche" (du vecteur), les 3 premiers échantillons se retrouvent à la fin du vecteur mais toujours dans le bon ordre?

Voici un exemple de courbes que je dois recaler:


merci par avance de votre aide,
Adrien