2013-03-11 6 views
7

मैं निम्नलिखित कोड (here से लिया)रैखिक प्रक्षेप कोड - मुझे समझ नहीं आता यह

void linear_interpolation_CPU(float2* result, float2* data, 
           float* x_out, int M, int N) {  
    float a; 
    for(int j = 0; j < N; j++) { 
     int k = floorf(x_out[j]); 
     a = x_out[j] - floorf(x_out[j]); 
     result[j].x = a*data[k+1].x + (-data[k].x*a + data[k].x); 
     result[j].y = a*data[k+1].y + (-data[k].y*a + data[k].y); 
    } 
} 

पढ़ रहा हूँ, लेकिन मैं यह नहीं मिलता है।

नहीं परिणाम [y]

enter image description here

सूत्र का उपयोग करके गणना की क्यों है?

+5

किसी भी व्यक्ति के लिए जो उस पृष्ठ पर कोड नहीं ढूंढ सकता है, किसी ने इसे भ्रमित करने के लिए पोस्ट किए जाने के तुरंत बाद इसे संपादित किया है। – ughoavgfhw

+2

प्रोग्रामिंग किसी के लिए नहीं है, कुछ लोग बस ऐसा नहीं कर सकते हैं: ( – Vlad

उत्तर

11

इसकी गणना इस तरह की जाती है। पहली दो पंक्तियों में

देखो:

int k = floorf(x_out[j]); 
a = x_out[j] - floorf(x_out[j]); 

पहली पंक्ति मंजिल फ़ंक्शन का उपयोग को परिभाषित करता है x0

the samples are obtained on the 0,1,...,M lattice 

अब हम स्पष्टता के लिए दूसरी पंक्ति को फिर से लिखने के रूप में कर सकता है:

a = x_out[j] - k; 

दूसरी पंक्ति है इसका कारण यह है लेख, नमूना अंक के लिए एक के एक जाली रिक्ति मान लिया गया लाइन के अनुसार है इसलिए x-x0

अब, हम समीकरण की जांच करते हैं:

result[j].y = a*data[k+1].y + (-data[k].y*a + data[k].y); 

y, x के मामले में इस नए सिरे से लिखना, और x0 देता है:

y = (x-x0)*data[k+1].y + (-data[k].y*(x-x0) + data[k].y); 

के Y0 रूप data[k+1].yy1 के रूप में और data[k].y नाम बदलने करते हैं:

y = (x-x0)*y1 + (-y0*(x-x0) + y0); 

के x-x0 बाहर खींच कर इस को पुन: व्यवस्थित करते हैं:

y = (x-x0)*(y1-y0) + y0; 

और फिर पुन: व्यवस्थित:

y = y0 + (y1-y0)*(x-x0); 

फिर, जाली रिक्ति महत्वपूर्ण है:

the samples are obtained on the 0,1,...,M lattice 

इस प्रकार, x1-x0 हमेशा होता है 1। अगर हम इसे वापस डाल देते हैं, तो हमें

मिलता है

जो केवल समीकरण है जिसे आप ढूंढ रहे थे।

माना जाता है कि यह हास्यास्पद है कि कोड को स्पष्ट नहीं किया गया है ताकि यह स्पष्ट हो सके।

+1

धन्यवाद रिचर्ड, विकिपीडिया को स्पष्ट तरीके से चीजों को समझाना है, मैं आपके अंतिम बयान से सहमत हूं। –

संबंधित मुद्दे