SORU
13 Mart 2009, Cuma


Nasıl numpy kullanabilir miyim.özilinti mı ilişkili?

Anladığım kadarıyla sadece kendisi ile ayarlayın ilişki olan sayı kümesi, oto-korelasyon yapmak istiyorum.

Numpy bu bağ işlevini kullanarak denedim, ama hemen hemen her zaman ilk sayı olduğu bir vektör verir sonuç olarak inanmak istemiyorumdeğilolması gerektiği gibi en büyüğü.

Bu yüzden, bu soru gerçekten iki sorum var:

  1. Numpy tam olarak ne olduğunu.işin ilişkilendirmek?
  2. Nasıl (veya başka bir şey) kullanmak için oto-korelasyon miyim?

CEVAP
24 Mart 2009, Salı


İlk soru, numpy.correlate(a, v, mode) a kıvrım performans v ters cevap vermek ve sonuçları belirtilen mod tarafından kırpılmış veriyor. definition of convolution C(t)= girin- bi * * * * < < sıfıra eşittirbirbenvben t- bi * * * * < t < ' in, - bi * * * * bi * * * * ama belli ki sonsuz uzunlukta bir mağaza yok diziye sonuçlar sağlar. Kırpılmış var ve bu modu devreye giriyor. 3 farklı modu vardır: tam, aynı, & geçerli:

    < . "" moduna döner a v her iki örtüşme var bazı yerlerde t Her için sonuçlar. tam ^lit
  • "aynı" modu en kısa vektör (a v) aynı uzunlukta bir sonuç verir. <>"geçerli" modu a v tamamen üst üste tek sonuç verir. lit numpy.convolve documentation mod hakkında daha fazla ayrıntı verir.

İkinci sorunuz için, numpy.correlate sanırımsen özilinti vererek, sadece biraz daha iyi veriyor. Bu özilinti bir sinyal, ya da işlevini, ne kadar belirli bir zaman farkı da kendisini bulmak için kullanılır. Bir anda 0, auto-korelasyon farkı sinyali kendisi aynı olduğu için en yüksek olmalıdır, özilinti sonucu dizideki ilk elemanı en büyük olacağının beklendiği kadar. Ancak, korelasyon 0 zaman bir fark değil başlıyor. Negatif bir zaman farkı, 0 ve pozitif gider sonra kapatır başlar. Yani bekliyordun:

özilinti(a) = girin- bi * * * * < < sıfıra eşittirbirbenvben t0 <=&; I. g . t lt

Ama ne oldu:

özilinti(a) = girin- bi * * * * < < sıfıra eşittirbirbenvben t- bi * * * * < t < bi * * * * nereye

Yapman gereken şey ilişki sonucu son yarısını al, aradığınız özilinti olmalıdır. Basit bir python bunun için fonksiyon:

def autocorr(x):
    result = numpy.correlate(x, x, mode='full')
    return result[result.size/2:]

Elbette, hata denetimi x aslında 1-d bir dizi olduğundan emin olmak gerekir. Ayrıca, bu açıklama muhtemelen matematiksel olarak en sıkı değil. Kıvrım tanımı onları kullanır, çünkü sonsuz atıp durdum, ama mutlaka özilinti için geçerli değildir. Yani, bu açıklama teorik kısmı biraz zayıf olabilir, ama umarım pratik sonuçları faydalıdır. Özilinti üzerindeThese pages oldukça yardımsever ve eğer gösterim ve ağır kavramlar üzerinden yürüyen bir sakıncası yok, eğer doğru değilse çok daha iyi teorik bir arka plan verebilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Renaud

    Charles Rena

    10 Kasım 2007
  • Hey Nadine

    Hey Nadine

    24 Kasım 2006
  • hotstrikegently

    hotstrikegen

    26 AĞUSTOS 2011