HOW DO I DO THAT IN MATLAB SERIES?

In this series, I am answering questions that students have asked me about MATLAB. Most of the questions relate to a mathematical procedure.

Contents

TOPIC

How do I conduct spline interpolation for given data.

SUMMARY

Language : Matlab 2010a; Authors : Autar Kaw and Sri Harsha Garapati; Mfile available at Last Revised : January 23, 2012; Abstract: This program shows you how to perform spline interpolation in MATLAB

clc
clear all
clf

INTRODUCTION

disp('ABSTRACT')
disp('   This program shows you how to perform spline interpolation')

disp(' ')
disp('AUTHOR')
disp('   Autar Kaw and Sri Harsha Garapati of http://autarkaw.wordpress.com')
disp(' ')
disp('MFILE SOURCE')
disp('   http://numericalmethods.eng.usf.edu/blog/interpolation_spline_sec002_blog.m')
disp(' ')
disp('LAST REVISED')
disp('   January 23, 2012')
disp(' ')
ABSTRACT
   This program shows you how to perform spline interpolation
 
AUTHOR
   Autar Kaw and Sri Harsha Garapati of http://autarkaw.wordpress.com
 
MFILE SOURCE
   http://numericalmethods.eng.usf.edu/blog/interpolation_spline_sec002_blog.m
 
LAST REVISED
   January 23, 2012
 

INPUTS

% Inputs
% x cordinates of data
xd  =[2 5.1 7.7 9.2 10.3];
% y cordinates of date
yd  =[1.4 3.3 5.7 10.4 12.5];
% xvalue at which y is to be predicted using spline interpolation
xval=6.5;

DISPLAYING INPUTS

disp('  ')
disp('INPUTS')
% Creating a matrix to print input data as a table
data=[xd;yd]';
disp('   X Data     Y Data')
% Printing the input data as a table
disp(data)
% Printing the input value of X at which Y is to be predicted using spline
% interpolation
fprintf('  Predict the value of y when x is %g\n\n',xval)
  
INPUTS
   X Data     Y Data
    2.0000    1.4000
    5.1000    3.3000
    7.7000    5.7000
    9.2000   10.4000
   10.3000   12.5000

  Predict the value of y when x is 6.5

THE CODE

% Predicting the value of y at xval using spline interpolation
yval=spline(xd,yd,xval);

% setting up the domain to plot the spline interpolation
xp  =[min(xd):0.1:max(xd)];
% evaluating over domain xp for plotting the spline interpolation function
yp  =spline(xd,yd,xp);

DISPLAYING OUTPUTS AND PLOTS

disp('  ')
disp('OUTPUTS')
% printing the predicted value of y
fprintf('  Predicted value of y is %g\n',yval)

disp('  See figure(1)')
% Telling Matlab to name the figure as Figure-1
figure(1)
% Matlab command so that it does hold on to all the plots
hold on
% plotting the data points
plot(xd,yd,'r*','MarkerSize',10)
% plotting the interpolation function
plot(xp,yp,'b-','LineWidth',2)
% plotting the predicted data point value
plot(xval,yval,'kd','MarkerSize',10)
% Title of the Plot
title('Interpolation Model for Data Points')
% Legend to distunguish different plots
legend('Given Points','Interpolation Model','Predicted Point',0)
% Labeling the X-axis
xlabel('x')
% Labeling the Y-Axis
ylabel('y')
% Matlab command to exit the hold-on option
hold off
  
OUTPUTS
  Predicted value of y is 3.74359
  See figure(1)