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:
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?
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
Voici un exemple de courbes que je dois recaler:
merci par avance de votre aide,
Adrien
Partager