MATLAB Language
MATLAB के साथ प्रक्षेप
खोज…
वाक्य - विन्यास
- zy = interp1 (x, y);
- zy = interp1 (x, y, 'विधि');
- zy = interp1 (x, y, 'method', 'extrapolation');
- zy = interp1 (x, y, zx);
- zy = interp1 (x, y, zx, 'विधि');
- zy = interp1 (x, y, zx, 'method', 'extrapolation');
टुकड़े का प्रक्षेप 2 आयामी
हम डेटा को इनिशियलाइज़ करते हैं:
[X,Y] = meshgrid(1:2:10);
Z = X.*cos(Y) - Y.*sin(X);
सतह निम्नलिखित की तरह दिखती है।
अब हम उन बिंदुओं को निर्धारित करते हैं जहाँ हम प्रक्षेप करना चाहते हैं:
[Vx,Vy] = meshgrid(1:0.25:10);
अब हम निकटतम प्रक्षेप कर सकते हैं,
Vz = interp2(X,Y,Z,Vx,Vy,'nearest');
रैखिक सेपक,
Vz = interp2(X,Y,Z,Vx,Vy,'linear');
घन प्रक्षेप
Vz = interp2(X,Y,Z,Vx,Vy,'cubic');
या तख़्ता प्रक्षेप:
Vz = interp2(X,Y,Z,Vx,Vy,'spline');
टुकड़े का प्रक्षेप 1 आयामी
हम निम्नलिखित डेटा का उपयोग करेंगे:
x = 1:5:50;
y = randi([-10 10],1,10);
इसके द्वारा x
और y
डेटा बिंदुओं के निर्देशांक हैं और z
ऐसे बिंदु हैं z
बारे में हमें जानकारी चाहिए।
z = 0:0.25:50;
Z के y-मानों को खोजने का एक तरीका है टुकड़े-टुकड़े रैखिक प्रक्षेप।
z_y = interp1(x,y,z,'linear');
इसके द्वारा एक दो आसन्न बिंदुओं के बीच की रेखा की गणना करता है और यह मानकर z_y
हो जाता है कि बिंदु उन रेखाओं का एक तत्व होगा।
interp1
अन्य विकल्प भी प्रदान करता है जैसे निकटतम प्रक्षेप,
z_y = interp1(x,y,z, 'nearest');
अगले प्रक्षेप,
z_y = interp1(x,y,z, 'next');
पिछला प्रक्षेप,
z_y = interp1(x,y,z, 'previous');
आकार-संरक्षण टुकड़ा करने योग्य घन प्रक्षेप,
z_y = interp1(x,y,z, 'pchip');
क्यूबिक कनवल्शन, z_y = interp1 (x, y, z, 'v5cubic');
और प्रक्षेप प्रक्षेप
z_y = interp1(x,y,z, 'spline');
इसके निकट, अगले और पिछले प्रक्षेप टुकड़े के निरंतर प्रक्षेप हैं।
बहुपद प्रक्षेप
हम उस डेटा को इनिशियलाइज़ करते हैं जिसे हम इंटरपोल करना चाहते हैं:
x = 0:0.5:10;
y = sin(x/2);
इसका अर्थ है कि अंतराल में डेटा के लिए अंतर्निहित कार्य [0,10] साइनसोइडल है। अब सन्निकट बहुपद के गुणांक की गणना की जा रही है:
p1 = polyfit(x,y,1);
p2 = polyfit(x,y,2);
p3 = polyfit(x,y,3);
p5 = polyfit(x,y,5);
p10 = polyfit(x,y,10);
इसके द्वारा है x
एक्स-मूल्य और y
और हमारे डेटा बिंदुओं का y- मान तीसरे नंबर बहुपद के आदेश / डिग्री है। अब हम उस ग्रिड को सेट करते हैं जिसे हम अपने प्रक्षेपित कार्य की गणना करना चाहते हैं:
zx = 0:0.1:10;
और y- मानों की गणना करें:
zy1 = polyval(p1,zx);
zy2 = polyval(p2,zx);
zy3 = polyval(p3,zx);
zy5 = polyval(p5,zx);
zy10 = polyval(p10,zx);
एक यह देख सकता है कि जब बहुपद की डिग्री बढ़ जाती है तो नमूने के लिए सन्निकटन त्रुटि छोटी हो जाती है।
जबकि इस उदाहरण में सीधी रेखा के सन्निकटन में बड़ी त्रुटियां हैं, 3 बहुपद क्रम इस इंटरवेल में साइनस फ़ंक्शन को अपेक्षाकृत अच्छा बनाता है।
आदेश 5 और क्रम 10 बहुपद के साथ प्रक्षेप में लगभग कोई त्रुटि नहीं है।
हालाँकि अगर हम नमूना प्रदर्शन से बाहर मानते हैं तो कोई यह देखता है कि बहुत अधिक ऑर्डर ओवरफिट हो जाते हैं और इसलिए नमूने से बाहर खराब प्रदर्शन करते हैं। हम ने ठीक किया
zx = -10:0.1:40;
p10 = polyfit(X,Y,10);
p20 = polyfit(X,Y,20);
तथा
zy10 = polyval(p10,zx);
zy20 = polyval(p20,zx);
यदि हम उस कथानक पर एक नज़र डालते हैं जो हम देखते हैं कि नमूना प्रदर्शन का क्रम क्रम 1 के लिए सबसे अच्छा है
और बढ़ती डिग्री के साथ खराब होता रहता है।