Working out an equation on MATLAB using co-ordinates

  • Context: MATLAB 
  • Thread starter Thread starter Saints-94
  • Start date Start date
  • Tags Tags
    Matlab
Click For Summary
SUMMARY

This discussion focuses on using MATLAB to derive a trend line equation from a set of coordinates. The user provided specific data points and sought assistance in implementing MATLAB code to perform polynomial fitting. The solution involves utilizing the polyfit function for quadratic fitting and polyval for estimating fitted values. Additionally, the discussion includes a method to display the resulting equation of the fit line using fprintf.

PREREQUISITES
  • Familiarity with MATLAB programming environment
  • Understanding of polynomial fitting concepts
  • Knowledge of basic plotting functions in MATLAB
  • Ability to interpret regression analysis results
NEXT STEPS
  • Learn how to use MATLAB's polyfit for different polynomial degrees
  • Explore MATLAB's fit function for advanced fitting options
  • Investigate data visualization techniques in MATLAB for better presentation
  • Study regression diagnostics to evaluate the quality of fit
USEFUL FOR

This discussion is beneficial for data analysts, researchers, and students who need to perform polynomial regression analysis using MATLAB and visualize the results effectively.

Saints-94
Messages
63
Reaction score
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)
upload_2017-3-6_20-7-31-png.114188.png

This is the data that has been plotted on Excel.
 
Physics news on Phys.org
Matlab:
x = [0 6.7 13.4 18.7 22.8 27]
y = [580 495 445 365 350 340]
 
I managed to plot the points using that coding, but I am struggling with drawing a trend line and working out an equation.
 
Did you look at the link I gave you in your other thread on how to do a fit using Matlab?
 
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.
 
Try this:

Code:
% 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');
 
  • Like
Likes   Reactions: Saints-94
That's great, thanks for your help! Is there anyway to show the equation for the 'fit' line?
 
Saints-94, you can do

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

Similar threads

  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 14 ·
Replies
14
Views
4K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 3 ·
Replies
3
Views
7K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 6 ·
Replies
6
Views
6K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 4 ·
Replies
4
Views
5K