प्रश्न: स्थानीय स्तर पर नाएन के स्थानीय स्तर पर कैसे इंटरपोलेट करें?MATLAB: एक समय श्रृंखला में NaNs पर इंटरपोलेशन
मेरे पास एक समय श्रृंखला ("एक्स" डेटा समान रूप से "टी" समय पर नमूना है) जिसमें NaNs के ब्लॉक हैं। उदाहरण के लिए:
x = [ 1 2 4 2 3 15 10 NaN NaN NaN NaN 2 4 NaN 19 25]
t = [0.1 0.2 0.3 ...etc..]
मैं NaN से अधिक प्रक्षेप प्रदर्शन करने के लिए चाहते हैं।
सबसे प्राथमिक दृष्टिकोण केवल बाएं-अधिकांश डेटा बिंदु से दाएं-डेटा बिंदु से रैखिक रूप से इंटरपोलेट करना होगा। उदाहरण के लिए। x = 10 से x = 2 की रेखा और 4 NaN मानों को लाइन से मान असाइन किए जाएंगे।
~ 10000 NaNs के साथ समय श्रृंखला की लंबाई ~ 1.5 मिलियन है, इसलिए मैं डेटा (इंटरपोलेशन में) को शामिल नहीं करना चाहता जो कि NaN स्थानों से बहुत दूर है। कुछ NaNs 1000-2000 की लंबाई फैलाते हैं।
X(isnan(X)) = interp1(find(~isnan(X)), X(~isnan(X)), find(isnan(X)), 'linear');
पूरे समय श्रृंखला का उपयोग करके NaN पर रैखिक रूप से इंटरपोलेट करेगा।
मैं स्थानीय रूप से कैसे इंटरपोलेट करूं? रैखिक पर्याप्त होना चाहिए। शायद रैखिक इंटरपोलेशन बाएं और कुछ नैन ब्लॉक (शायद 100-200 अंक) के दाईं ओर कुछ बिंदुओं को शामिल करता है। एक प्राकृतिक पड़ोसी या स्पलीन (?) एल्गोरिदम अधिक उपयुक्त हो सकता है; मुझे समय श्रृंखला में असंगत व्यवहार जोड़ने में सावधान रहना चाहिए (उदा। इंटरपोलेशन जो आवृत्ति के लिए कल्पित "शक्ति" जोड़ता है)।
अद्यतन: समय श्रृंखला एक वर्ष लंबी अवधि में एक मिनट-नमूना तापमान का रिकॉर्ड है। रैखिक इंटरपोलेशन पर्याप्त है; मुझे सिर्फ NaNs के ~ 6-7 घंटे की लंबाई अंतराल भरने की आवश्यकता है (मुझे NaN अंतराल से पहले और NaN अंतराल के बाद डेटा प्रदान किया गया है)।
रैखिक प्रक्षेप केवल मानों को साथ वाले क्षेत्र के लिए उपयोग करता है interpolated होने के कारण, "पूरे समय श्रृंखला का उपयोग" के बारे में चिंता करने की कोई ज़रूरत नहीं है। या समस्या प्रदर्शन है? – Jonas
आह मुझे मूर्खतापूर्ण। मैं इस धारणा के तहत था कि यह कम से कम वर्ग रैखिक फिट का उपयोग कर फिट का उपयोग कर बिंदु निर्दिष्ट कर रहा था। यदि इंटरप 1 'रैखिक' पड़ोसी बाएं और दाएं बिंदुओं और इंटरपोलेट्स में शामिल हो जाता है, तो 'क्यूबिक' और 'पचिप' क्या अंतर करते हैं? जैसे यह डेटा पर एक घन फिट नहीं है तो interpolate? – Justin
क्या आप पूछ रहे हैं कि इंटरपोलेशन का सबसे अच्छा तरीका क्या है? यदि ऐसा है, तो सबसे अच्छी विधि वास्तव में आपके आवेदन पर निर्भर करती है। उदाहरण के लिए, कुछ अनुप्रयोगों के लिए, आप केवल पिछले डेटा का उपयोग करके इंटरपोलेट करना चाहते हैं, क्योंकि रैखिक इंटरपोलेशन जैसी विधि का तात्पर्य है कि आप समय से पहले जानते हैं कि अगला गैर-एनएन अवलोकन क्या होगा। स्पेक्ट्रम के दूसरे छोर पर आप एक ईएम एल्गोरिदम लागू कर सकते हैं जो हर दूसरे अवलोकन के संयुक्त वितरण पर सशर्त, उनके सशर्त रूप से अपेक्षित मूल्यों के साथ गायब अवलोकनों को प्रतिस्थापित करता है। इसलिए आपके आवेदन को जानने के बिना जवाब देना मुश्किल है। –