Rapide Différence moyenne carré Fonction
-
13-09-2019 - |
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
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