# Matlab Working out an equation on MATLAB using co-ordinates

1. Mar 8, 2017

### Saints-94

I have a series of data points for X and Y points on a graph. The data is quite random and I am trying to work out a trend line so I can then form an equation for the line. How would I go about working out the equation for the data below using MATLAB?
(0, 580)
(6.7, 495)
(13.4, 445)
(18.7, 365)
(22.8, 350)
(27, 340)

This is the data that has been plotted on Excel.

2. Mar 8, 2017

### Staff: Mentor

Code (Matlab M):

x = [0 6.7 13.4 18.7 22.8 27]
y = [580 495 445 365 350 340]

3. Mar 8, 2017

### Saints-94

I managed to plot the points using that coding, but I am struggling with drawing a trend line and working out an equation.

4. Mar 8, 2017

### Staff: Mentor

Did you look at the link I gave you in your other thread on how to do a fit using Matlab?

5. Mar 8, 2017

### Saints-94

Yes, I read through the link. However I was struggling to understand the MATLAB coding, hence why I have asked for further MATLAB coding help.

6. Mar 18, 2017

### Image Analyst

Try this:

Code (Text):

% Initialization steps.
clc;    % Clear the command window.
close all;  % Close all figures (except those of imtool.)
clear;  % Erase all existing variables. Or clearvars if you want.
workspace;  % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 20;

x = [0 6.7 13.4 18.7 22.8 27]
y = [580 495 445 365 350 340]
% Demo to illustrate how to use the polyfit routine to fit data to a polynomial
% and to use polyval() to get estimated (fitted) data from the coefficients that polyfit() returns.
% Demo first uses a quadratic fit via polyfit()

% Now we have sample, noisy y values that we will fit a curve through.

% Plot the training set of data (our noisy y values).
plot(x, y, 'ro', 'MarkerSize', 8, 'LineWidth', 2);
grid on;
xlabel('X', 'FontSize', fontSize);
ylabel('Y', 'FontSize', fontSize);
title('Linear Fit', 'FontSize', fontSize);

% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);
% Give a name to the title bar.
set(gcf, 'Name', 'Demo by ImageAnalyst', 'NumberTitle', 'Off')

% Do the regression with polyfit.  Fit a quadratic curve through the noisy y values.
coefficients = polyfit(x, y, 2)
% Make fit.  It does NOT need to have the same
% number of elements as your training set,
% or the same range, though it could if you want.
% Make 500 fitted samples going from the min x to the max x.
xFit = linspace(min(x), max(x), 500);
% Get the estimated values with polyval()
yFit = polyval(coefficients, xFit);
% Plot the fit
hold on;
plot(xFit, yFit, '.-', 'LineWidth', 2);
legend('Training Set', 'Fit', 'Location', 'Northeast');

7. Mar 19, 2017

### Saints-94

That's great, thanks for your help! Is there anyway to show the equation for the 'fit' line?

8. Mar 24, 2017

### Image Analyst

Saints-94, you can do

fprintf('y = %f * x^2 + %f * x + %f\n', coefficients(1), coefficients(2), coefficients(3));