Rápido Promedio función de diferencia Square
-
13-09-2019 - |
Pregunta
Me pregunto si alguien sabe de un ayuno (es decir, O (log N (N))) método de cálculo de la función de la media cuadrada diferencia (ASDF) o la función de diferencia promedio magnitud (AMDF) para una señal periódica, o incluso es posible.
Yo sé que uno puede usar la FFT para calcular la correlación cruzada periódica. Por ejemplo, en el código de Matlab,
for i=1:N
xc(i)=sum(x1*circshift(x2,i-1));
end
es equivalente a la mucho más rápido
xc=ifft(fft(x1).*conj(fft(x2));
¿Existe un algoritmo similares "rápida" para
for i=1:N
ASDF(i)=sum((x1-circshift(x2,i-1)).^2)/N;
end
o
for i=1:N
AMDF(i)=sum(abs(x1-circshift(x2,i-1)))/N;
end
Solución
Puede ampliar su definición de ASDF de la siguiente manera:
for i = 1:N
asdf(i) = (sum(x1.^2) - 2*sum(x1*circshift(x2,i-1)) + sum(x2.^2))/N;
end
lo que simplifica a
asdf = (-2*ifft(fft(x1).*conj(fft(x2))) + sum(x1.^2) + sum(x2.^2))/N;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow