MATLAB Working out an equation on MATLAB using co-ordinates

  • Thread starter Thread starter Saints-94
  • Start date Start date
  • Tags Tags
    Matlab
Click For Summary
The discussion focuses on how to derive a trend line and equation for a set of random data points using MATLAB. The user provides a series of x and y coordinates and expresses difficulty in generating a trend line and the corresponding equation. A MATLAB code snippet is shared, demonstrating the use of the `polyfit` function to perform a quadratic fit on the data. The code includes initialization steps, plotting the data points, and fitting a curve using `polyval` to estimate values. Additionally, a method to display the equation of the fitted line is provided, utilizing the `fprintf` function to format the output. The conversation emphasizes practical coding solutions for data analysis in MATLAB.
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 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
3K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 3 ·
Replies
3
Views
7K
  • · Replies 6 ·
Replies
6
Views
5K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 4 ·
Replies
4
Views
5K
  • · Replies 3 ·
Replies
3
Views
3K