Azzera filtri
Azzera filtri

Interpolation points for determining values in between known data points

34 visualizzazioni (ultimi 30 giorni)
In this function, i want to use interp1 to generate a linear, cubic, and spline interpolation among points in the above sequence. The x values to be interpolated are x2interp = 1:0.1:10. I want to assign the resulting arrays of linear cubic, and spline interpolated values to y1, y2, and y3, respectively. Then plot the 3 dierent interpolations along with the original data on a single gure. (for the graph I am providing a legend to indicate the type of interpolation that each curve represents. blue circles to represent original data, red dashed line for linear interpolation, green dotted line for cubic interpolation and black solid line for spline interpolation.)
The set of data is :
x 1 2 3 4 5 6 7 8 9 10
y -2 3 -4 6 -7 10 -17 25 -26 30
I think I know the basic idea on how to write a interpolation function, but how do I incorporate the above data into my function?
function [y1, y2, y3] = MyInterpolator()
interp1 = interp1(X,Y,Xi)
yI = interp1(X,Y,Xi,'linear')
Y2 = interp1(X,Y,Xi,'cubic')
Y3 = interp1(X,Y,Xi,'spline')
PP = spline(X,Y)
x2interp = 1:0.1:10
ylabel('y')
xlabel('x')
legend('original data','linar','cubic', 'spline')
lines = {'original data','linar','cubic', 'spline'}
legend(lines)

Risposta accettata

Star Strider
Star Strider il 26 Ott 2012
Modificato: Star Strider il 26 Ott 2012
You're almost there! If you want to pass the x, y, and x2interp to your MyInterpolator function, I suggest changing the first line to:
function [y1, y2, y3] = MyInterpolator(X, Y, Xi)
then call it as:
[y1, y2, y3] = MyInterpolator(x, y, x2interp)
I also mention that you need to correct some typos so that your code reads:
y1 = interp1(X,Y,Xi,'linear')
y2 = interp1(X,Y,Xi,'cubic')
y3 = interp1(X,Y,Xi,'spline')
MATLAB is case-sensitive, so Y1 is not the same as y1.
Please eliminate this line:
interp1 = interp1(X,Y,Xi)
You redefine interp1 with it as a variable rather than a function and the following three lines will throw an error because of that.
  4 Commenti
Ben
Ben il 26 Ott 2012
okay, i completely forgot that you can still put in variables after you declare the function! that clears things up so much. thank you!!

Accedi per commentare.

Più risposte (1)

Azzi Abdelmalek
Azzi Abdelmalek il 26 Ott 2012
Modificato: Azzi Abdelmalek il 26 Ott 2012
function [y1, y2, y3] = MyInterpolator()
x =[ 1 2 3 4 5 6 7 8 9 10]
y=[ -2 3 -4 6 -7 10 -17 25 -26 30]
plot(x,y,'ob')
xi=1:0.1:10
method=char('linear','cubic','spline')
col={'--r',':g','-k'}
for k=1:3
yi{k}=interp1(x,y,xi,method(k,:))
hold on;plot(xi,yi{k},col{k})
end
y1=yi{1}
y2=yi{2}
y3=yi{3}

Categorie

Scopri di più su Interpolation in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by