> but definitely *no* need to use a function from an extra CRAN > package .. as someone else ``erronously'' suggested.
Except that Matlab's interp1() 'cubic' method does not use cubic spline interpolation, but Moler's 'pchip' approach, a piecewise cubic Hermite interpolation. Thus the results are different: % Matlab: interp1(X, Y, 11, 'cubic') %=> 5.8000 interp1(X, Y, 15, 'cubic') %=> 5.0000 # R: spfun <- splinefun( X, Y, "natural") spfun(11) #=> 5.785714 spfun(15) #=> 4.928571 spfun <- splinefun( X, Y, "monoH.FC") spfun(11) #=> 5.8 spfun(15) #=> 5.0 Unfortunately, if the points are not monotonic, the 'monoH.FC' method does not exactly agree with the 'pchip' approach, i.e. does not in general return the same results. By the way, pchip() in package 'pracma' implements Moler's approach and does return the same (interpolation and extrapolation) results as interp1() with the 'cubic' option in Matlab. Hans Werner Martin Maechler <maechler <at> stat.math.ethz.ch> writes: > > >>>>> David Winsemius <dwinsemius <at> comcast.net> > >>>>> on Sat, 1 Dec 2012 09:25:42 -0700 writes: > > > On Dec 1, 2012, at 5:09 AM, Steve Stephenson wrote: > > >> Hallo, I'm facing a problem and I would really appreciate > >> your support. I have to translate some Matalb code in R > >> that I don't know very well but I would like to. I have > >> to interpolate 5 point with a cubic spline function and > >> then I expect my function returns the Y value as output a > >> specific X value inside the evaluation range. Let's > >> suppose that: 1- *X = [-10, -5, 0, 5, 10]* 2 - *Y = [12, > >> 10, 8, 7, 6]* 3 - *I have to interpolate with a cubic > >> spline assuming x=11* > >> > >> In Matlab I used this function: > >> > >> *y = interp1(X, Y, x, "cubic"); * > >> > >> How can I do the same in R? Many thanks in advance for > >> your reply and support! > > > splinefun( x = c(-10, -5, 0, 5, 10), y = c(12, 10, 8, 7, 6), > method="natural")(11) [1] 5.785714 > > Yes, indeed, or simple spline(....) > > but definitely *no* need to use a function from an extra CRAN > package .. as someone else ``erronously'' suggested. > > Note that > spline() and splinefun() > together with > approx() and approxfun() > are among the several hundred functions that were already > part of "pre-alpha" R, i.e., before R had a version number > or *any* packages ... > and yes, the README then started with the two lines > > | R Source Code (Tue Jun 20 14:33:47 NZST 1995) > | Copyright 1993, 1994, 1995 by Robert Gentleman and Ross Ihaka > > and it would be *really* *really* great > if people did not add stuff to their packages that has > been part of R for longer than they have even heard of R. > > Martin Maechler, ETH Zurich > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.