आर

2012-06-07 8 views
8

में स्लाइडिंग एफएफटी नमूना के स्लाइडिंग एफएफटी की गणना के लिए आर में कोई फ़ंक्शन या पैकेज है? इसका मतलब है कि fft(x[n:m]) के आउटपुट को देखते हुए, fft(x[1+(n:m)]) पर कुशलता से गणना करें।आर

आदर्श रूप से मुझे एक ऑनलाइन संस्करण मिल जाएगा (जहां मुझे शुरुआत में पूर्णकालिक श्रृंखला तक पहुंच नहीं है, या यह स्मृति में फिट होने के लिए बहुत बड़ा है, और मैं इसे बचाने की कोशिश नहीं कर रहा हूं मेमोरी में पूरी तरह से चल रहे एफएफटी) और एक बैच संस्करण (जहां मैं इसे पूरा नमूना x देता हूं और इसे चलने वाली विंडो चौड़ाई w बताता हूं, जिसके परिणामस्वरूप आयाम c(w,length(x)/w) का जटिल मैट्रिक्स होता है)।

इस तरह के एक एल्गोरिथ्म यहाँ (लेकिन मैं किसी भी भाषा में यह लागू करने के लिए अभी तक कभी नहीं की कोशिश की है) प्रस्तुत किया है का एक उदाहरण:

http://cnx.org/content/m12029/latest/

ऐसी कोई thingy आर में पहले से ही मौजूद है, जो ऐसा नहीं करता मुझे लगता है कि लागू करने के लिए बहुत मुश्किल लग रहा है।

उत्तर

5

के रूप में आम तौर पर होता है जब मैं यहाँ कुछ पोस्ट, मैं इस पर काम कर रही है और एक समाधान के साथ आया था:

fft.up <- function(x1, xn, prev) { 
    b <- length(prev) 
    vec <- exp(2i*pi*seq.int(0,b-1)/b) 
    (prev - x1 + xn) * vec 
} 

# Test it out 
x <- runif(6) 
all.equal(fft.up(x[1], x[6], fft(x[1:5])), fft(x[2:6])) 
# [1] TRUE 

फिर भी जानना चाहते हैं कि कुछ पुस्तकालय इस प्रदान करता है रुचि रखते हैं, क्योंकि तब यह अन्य आसान चीजें पेश कर सकती है भी। =) लेकिन अभी के लिए मेरी समस्या हल हो गई है।