Verimli evrişim (R cinsinden)


9

Evrişimi hesaplamak / değerlendirmek istiyorum

g(x)=Df(xt)ϕ(t)dt,

burada bir yoğunluktur ve , kompakt destek ile düzgün bir fonksiyondur . Evrişim kapalı formda mevcut değildir ve bunu sayısal olarak entegre etmem gerekiyor. Sorum şu: Bunu yapmanın etkili bir yolu var mı? R'de uygulamak istiyorum, bu yüzden komutu kullanmaktan daha iyi bir yol olup olmadığını görmek istiyorum .fϕD integrate()


2
Koşullara bağlı olarak, genellikle 2 bölmenin büyük bir gücüne bağlı kalıyorum ve hızlı fourier dönüşümünü ( ?fft) kullanıyorum veya kullanıyorum convolve. Fft yaklaşımı kurmak biraz daha fazla iş gerektirir, ancak birkaç kez bir şeylerle kıvrılmanız gerekiyorsa daha iyidir. Bazen doğru argüman ayarlarını konvolve etmek biraz zaman alabilir.
Glen_b-Monica

@Glen_b Teşekkürler. Tek değişkenli fonksiyon içinf, Doğrudan entegrasyonun daha hızlı olabileceğini düşünüyorum.
Cook

2
Etkili bir yol istediniz - fft gerçekten hızlı ; sadece biraz kurulum gerektirir (binning, sıfırlarla doldurma).
Glen_b-Monica

@Glen_b Evet, fft'nin gerçekten hızlı olduğuna katılıyorum, ancak bir önceki adım süreci yavaşlatabilir. Zaten her iki yöntemi de karşılaştıracağım. Teşekkür ederim.
Cook

convolveBu amaçla birkaç kez kullandığımı hatırlıyorum . Basit çalışma örnekleri stats.stackexchange.com/a/41263 , stats.stackexchange.com/a/41255 ve stats.stackexchange.com/a/49444 adreslerinde görünür .
whuber

Yanıtlar:


9

Bunun için özel R paketlerine baktınız mı? Gibi convolve, https://stat.ethz.ch/R-manual/R-devel/library/stats/html/convolve.html


Teşekkürler. Düzgün anlıyorsam, bu paket iki işlev yerine sayısal dizileri döndürmek içindir. Bir şey mi kaçırıyorum?
Cook

2
Peki, bu paketi kullanmadım, ama R'de evrişim yapmaya çalışıyorsanız, temel olarak işlevlerinizdeki değerler olacak iki sayısal diziye sahip olacaksınız, değil mi? R'nin fonksiyon tanımı ile çalışmanıza izin verdiğini sanmıyorum.
jmnavarro
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.