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

Matlab Working out an equation on MATLAB using co-ordinates

  1. Mar 8, 2017 #1
    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. jcsd
  3. Mar 8, 2017 #2


    User Avatar

    Staff: Mentor

    Code (Matlab M):

    x = [0 6.7 13.4 18.7 22.8 27]
    y = [580 495 445 365 350 340]
  4. Mar 8, 2017 #3
    I managed to plot the points using that coding, but I am struggling with drawing a trend line and working out an equation.
  5. Mar 8, 2017 #4


    User Avatar

    Staff: Mentor

    Did you look at the link I gave you in your other thread on how to do a fit using Matlab?
  6. Mar 8, 2017 #5
    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.
  7. Mar 18, 2017 #6
    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()

    %============= QUADRATIC FIT ===================================
    % 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');
  8. Mar 19, 2017 #7
    That's great, thanks for your help! Is there anyway to show the equation for the 'fit' line?
  9. Mar 24, 2017 #8
    Saints-94, you can do

    fprintf('y = %f * x^2 + %f * x + %f\n', coefficients(1), coefficients(2), coefficients(3));
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted