Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

MatLab Help - Interpolation

  1. May 6, 2009 #1
    Hello, I'm having a really hard time doing some work in Matlab, I have a book but it just isnt making sense to me, the problem I have to do is in four parts so Ill just show the first part for now...

    The following coordinates specify the
    shape of a certain cars’ front fender. Interpolate and plot lines connecting these points
    using linear, spline and cubic options.
    x (ft) 0 0.25 0.75 1.25 1.5 1.75 1.875 2 2.215 2.25
    y (ft) 1.2 1.18 1.1 1.0 0.92 0.8 0.7 0.55 0.35 0

    Now do I have to interpolate the coordinates first, or do I interpolate the data when I plot the lines?
  2. jcsd
  3. May 6, 2009 #2
    The question is asking you to use MATLAB to "connect the dots", that is, interpolation, using piecewise linear, cubic or spline functions, that is, to connect the dots with straight lines, cubics, or spines. You do this using Matlab's interp1 function. Look at the help file in Matlab. interp1 works like this:

    >> yi = interp1(x,y,xi,method)

    the vectors x and y are as you have them, they give the coordinates of the points. xi is a vector of points at which you would like Matlab to interpolate. In your case, x ranges between 0 and 2.25, so say you want Matlab to interpolate the date at increments of 0.1, say. Then you will have
    >> xi = 0:0.1:2.25

    The "method" referred to in
    >> yi = interp1(x,y,xi,method)
    is the method you would like Matlab to use to do the interpolation, so in place of "method" you would put "linear", "cubic", or "spline", according to the method you want (without the quotation marks ofcourse.)

    And then you can plot the interpolation:
    >> plot(xi,yi)
    If you would like to see the original points as well, then
    >> plot(x,y,'o',xi,yi)
  4. Jul 8, 2009 #3

    I have done the above and now would like to both integrate and find the derivative of the function created by the interpolation. How do I go about doing this?
  5. Jul 9, 2009 #4
    Matlab is capable of finding the derivative of the line created by the interpolation right?
  6. Jul 11, 2009 #5


    User Avatar
    Science Advisor

    Qspeechc's example leaves you with a set of interpolated points yi, interpolated at values xi. You can then do numerical differentiation (using whichever method you feel is most appropriate) and numerical integration on the resulting vector.

    A primer on numerical differentiation:

    The MATLAB trapezoid rule (probably the easiest way of doing numerical integration) page:
  7. Jul 13, 2009 #6
    Thanks dude,

    The integration worked well. to differentiate, I understand the method, but I feel like there's a function that should do that in MATLAB. Maybe pdeval(m,x,ui,xout)??
  8. Jul 13, 2009 #7


    User Avatar
    Science Advisor

    Unfortunately, AFAIK there isn't one (for the reasons mentioned in the link I sent you to: you can take forward difference, backwards difference, three-point, etc. The closest thing there is to such a thing is the diff function (which just subtract element n from element n-1):
    http://www.mathworks.com/access/helpdesk/help/techdoc/ref/diff.html [Broken]
    Last edited by a moderator: May 4, 2017
  9. Jul 17, 2009 #8
    The gradient function does numerical derivatives.
  10. Jul 17, 2009 #9
    Thanks for the help. However, I don't have an equation to input; I just have two thousand points that seem to make a smooth curve. Can Matlab find the equation to the curve?
  11. Jul 17, 2009 #10
    polyfit fits a polynomial of a specified order to the the data. It returns the coefficients of the polynomial.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook