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

Discussion Overview

The discussion revolves around using MATLAB to analyze a set of data points by plotting them and determining a trend line equation. Participants are focused on fitting a polynomial curve to the data and extracting the corresponding equation.

Discussion Character

  • Technical explanation
  • Mathematical reasoning
  • Homework-related

Main Points Raised

  • One participant presents a series of X and Y coordinates and seeks assistance in finding a trend line equation using MATLAB.
  • Another participant provides the MATLAB code to plot the data points and suggests using the polyfit function for curve fitting.
  • A participant expresses difficulty in understanding the MATLAB coding and requests further help.
  • Further MATLAB code is shared, demonstrating how to perform a quadratic fit and plot the fitted curve alongside the original data points.
  • One participant asks if it is possible to display the equation of the fitted line, leading to a suggestion on how to print the equation using fprintf.

Areas of Agreement / Disagreement

Participants generally agree on the approach of using MATLAB for fitting a polynomial to the data, but there is no consensus on the specific methods or understanding of the coding involved, as some participants express confusion.

Contextual Notes

Some participants may have varying levels of familiarity with MATLAB, which affects their understanding of the coding and fitting process. There is also a lack of clarity on the specific type of polynomial fit that is most appropriate for the data.

Who May Find This Useful

Individuals interested in data analysis using MATLAB, particularly those looking to fit curves to datasets and extract equations from fitted models.

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
3K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 3 ·
Replies
3
Views
8K
  • · 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