**Tags**

Many students ask me how do I do this or that in MATLAB. So I thought why not have a small series of my next few blogs do that. In this blog, I show you how to do polynomial regression.

- The MATLAB program link is here.
- The HTML version of the MATLAB program is here.
**DO NOT COPY AND PASTE THE PROGRAM BELOW BECAUSE THE SINGLE QUOTES DO NOT TRANSLATE TO THE CORRECT SINGLE QUOTES IN MATLAB EDITOR.****DOWNLOAD THE MATLAB PROGRAM****INSTEAD**

%% 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.

%% TOPIC

% How do I do polynomial regression?

%% SUMMARY

% Language : Matlab 2008a;

% Authors : Autar Kaw;

% Mfile available at

% http://numericalmethods.eng.usf.edu/blog/regression_polynomial.m;

% Last Revised : August 3, 2009;

% Abstract: This program shows you how to do polynomial regression?

% .

clc

clear all

clf

%% INTRODUCTION

disp(‘ABSTRACT’)

disp(‘ This program shows you how to do polynomial regression’)

disp(‘ ‘)

disp(‘AUTHOR’)

disp(‘ Autar K Kaw of https://autarkaw.wordpress.com’)

disp(‘ ‘)

disp(‘MFILE SOURCE’)

disp(‘ http://numericalmethods.eng.usf.edu/blog/regression_polynomial.m’)

disp(‘ ‘)

disp(‘LAST REVISED’)

disp(‘ August 3, 2009’)

disp(‘ ‘)

%% INPUTS

% y vs x data to regress

% x data

x=[-340 -280 -200 -120 -40 40 80];

% ydata

y=[2.45 3.33 4.30 5.09 5.72 6.24 6.47];

% Where do you want to find the values at

xin=[-300 -100 20 125];

%% DISPLAYING INPUTS

disp(‘ ‘)

disp(‘INPUTS’)

disp(‘________________________’)

disp(‘ x y ‘)

disp(‘________________________’)

dataval=[x;y]’;

disp(dataval)

disp(‘________________________’)

disp(‘ ‘)

disp(‘The x values where you want to predict the y values’)

dataval=[xin]’;

disp(dataval)

disp(‘________________________’)

disp(‘ ‘)

%% THE CODE

% Using polyfit to conduct polynomial regression to a polynomial of order 1

pp=polyfit(x,y,1);

% Predicting values at given x values

yin=polyval(pp,xin);

% This is only for plotting the regression model

% Find the number of data points

n=length(x);

xplot=x(1):(x(n)-x(1))/10000:x(n);

yplot=polyval(pp,xplot);

%% DISPLAYING OUTPUTS

disp(‘ ‘)

disp(‘OUTPUTS’)

disp(‘________________________’)

disp(‘ xasked ypredicted ‘)

disp(‘________________________’)

dataval=[xin;yin]’;

disp(dataval)

disp(‘________________________’)

xlabel(‘x’);

ylabel(‘y’);

title(‘y vs x ‘);

plot(x,y,’o’,’MarkerSize’,5,’MarkerEdgeColor’,’b’,’MarkerFaceColor’,’b’)

hold on

plot(xin,yin,’o’,’MarkerSize’,5,’MarkerEdgeColor’,’r’,’MarkerFaceColor’,’r’)

hold on

plot(xplot,yplot,’LineWidth’,2)

legend(‘Points given’,’Points found’,’Regression Curve’,’Location’,’East’)

hold off

disp(‘ ‘)

This post is brought to you by Holistic Numerical Methods: Numerical Methods for the STEM undergraduate at http://numericalmethods.eng.usf.edu, the textbook on Numerical Methods with Applications available from the lulu storefront, and the YouTube video lectures available at http://numericalmethods.eng.usf.edu/videos and http://www.youtube.com/numericalmethodsguy

Subscribe to the blog via a reader or email to stay updated with this blog. Let the information follow you.

Asad

said:Thank you so much . I have just got it.

LikeLike

Ali

said:I want to use a method for leveling a magnetic data which it’s name is “differential polynomial fitting” how I do it and what is the good matlab code for it?

The technique is based on polynomial fitting of data points in 1D and 2D sliding windows

A polynomial is fitted to data points in a 2D circular

window that contains at least three flight lines. Then the same

procedure is done inside a 1D window placed at the center of

the 2D window. The leveling error is the difference between

1D and 2D polynomial fitted data at the center of the windows

LikeLike