Question

Je me demande si quelqu'un connaît un rapide (c.-à-O (N log (N))) Méthode de calcul de la fonction de différence quadratique moyenne (ASDF) ou la fonction de différence de grandeur moyenne (AMDF) pour un signal périodique, ou est même possible.

Je sais que l'on peut utiliser la FFT pour calculer la corrélation croisée périodique. Par exemple, dans le code Matlab,

for i=1:N
xc(i)=sum(x1*circshift(x2,i-1));
end

est équivalente à la plus rapide

xc=ifft(fft(x1).*conj(fft(x2));

Y at-il un algorithme « rapide » similaire pour

for i=1:N
ASDF(i)=sum((x1-circshift(x2,i-1)).^2)/N;
end

ou

for i=1:N
AMDF(i)=sum(abs(x1-circshift(x2,i-1)))/N;
end

Était-ce utile?

La solution

Vous pouvez étendre votre définition de ASDF comme suit:

for i = 1:N
    asdf(i) = (sum(x1.^2) - 2*sum(x1*circshift(x2,i-1)) + sum(x2.^2))/N;
end

ce qui simplifie à

asdf = (-2*ifft(fft(x1).*conj(fft(x2))) + sum(x1.^2) + sum(x2.^2))/N;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top