Periyodikliği belirlemek için normalleştirilmiş bir otokorelasyon yapardım . periyodu ile periyodikse, sonuçtaki her P örneğinde pikler görmelisiniz . "1" in normalleştirilmiş bir sonucu mükemmel periyodiklik anlamına gelir, "0" o dönemde hiç periyodiklik anlamına gelmez ve kusurlu periyodiklik arasındaki değerler anlamına gelir. Otokorelasyon yapmadan önce veri dizisinin ortalamasını veri dizisinden çıkarın, çünkü sonuçlara ağırlık verir.PP
Tepe noktaları, üst üste binen daha az örneğe sahip oldukları için aldıkları merkezden uzaklaştıkça azalacaktır. Sonuçları çakışan örneklerin yüzdesinin tersi ile çarparak bu etkiyi azaltabilirsiniz.
buradaU(n)önyargısız otokorelasyon,A(n)normalleştirilmiş otokorelasyon,nofset veNveri dizisindeki periyodikliği kontrol ettiğiniz örnek sayısıdır.
U( n ) = A ( n ) ∗ N| N-- n |
U( n )A ( n )nN-
DÜZENLEME: Bu, dizilerin periyodik olup olmadığını anlamanın bir örneğidir. Aşağıdaki Matlab kodu.
s1 = [1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 0 1 0 1];
s1n = s1 - mean(s1);
plot(xcorr(s1n, 'unbiased'))
Xcorr işlevinin "nötr" parametresi, yukarıdaki denklemimde açıklanan ölçeklendirmeyi yapmasını söyler. Ancak, otomatik korelasyon normalleştirilmemiştir, bu nedenle merkezdeki tepe 1 yerine 0.25 civarındadır. En dıştaki kenarlar dışında karşılık gelen başka zirve olmadığını görüyoruz. Bunlar önemli değil çünkü üst üste binen sadece bir örnek var, bu yüzden anlamlı değil.
s2 = [1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0];
s2n = s2 - mean(s2);
plot(xcorr(s2n, 'unbiased'))
Burada dizinin periyodik olduğunu görüyoruz, çünkü merkez pik ile aynı büyüklükte çok sayıda nötr otokorelasyon tepe noktası var.