10

周期信号の平均二乗差分関数 (ASDF) または平均振幅差分関数 (AMDF) を計算する高速 (つまり O(N log(N)) ) 方法を誰かが知っているかどうか疑問に思っています。 .

FFTを使用して周期的な相互相関を計算できることを知っています。たとえば、Matlab コードでは、

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

はるかに速い

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

同様の「高速」アルゴリズムはありますか

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

また

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

?

4

1 に答える 1

8

ASDFの定義は次のように拡張できます。

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

これは単純化して

asdf = (-2*ifft(fft(x1).*conj(fft(x2))) + sum(x1.^2) + sum(x2.^2))/N;
于 2009-06-10T02:51:01.913 に答える