Fit a linear equation to obtain coefficients (constants)
3 views (last 30 days)
Show older comments
Hi, I have a linear equation P = a + bM + c(Y-1) + d(M(Y-1)) where a, b, c and d are coefficients (constants). P, Y and M are known properties. Specifically, there are multiple P values, each with their corresponding Y and M values. How do I use matlab or excel to fit the data to the equation above to obatin the a, b, c & d coefficients? Please see image below. So each P value has 2 Y values and 2 M values. Any ideas?

0 Comments
Answers (2)
Matt J
on 10 Jan 2025
Edited: Matt J
on 10 Jan 2025
I have a linear equation P = a + bM + c(Y-1) + d(M(Y-1)) where a, b, c and d are coefficients (constants). P, Y and M are known properties.
If your model is P = a + bM + c(Y-1) + d(M(Y-1)), then it can be written in matrix/vector form P=A*x where x=[a,b,c,d] and
P=P(:); M=M(:); Y=Y(:); e=ones(size(M));
A=[e,M,(Y-1),M*(Y-1)]
and you could solve it this way,
x=A\P
However,
So each P value has 2 Y values and 2 M values.
that won't work. You would need at least 4 values of M,Y,P to obtain a unique solution for 4 variables. And that is true of any solution approach, not just the one I outline above.
3 Comments
Matt J
on 11 Jan 2025
Curious any code I can use to start?
It's been shown. Write your equations in matrix form P=A*x and solve with x=A\P.
Altaïr
on 10 Jan 2025
Edited: Altaïr
on 10 Jan 2025
Hello,
A linear model essentially fits a hyperplane, where each combination of independent variables is mapped to a single value of the dependent variable. Since there are two combinations of Y and M values for each value of P, a higher degree equation might be necessary. The Curve Fitting Toolbox offers several options for this. Here's a helpful example to get started:
This example demonstrates how to perform curve fitting using a polynomial curve. The Curve Fitter should help in figuring out the best suitable model for the data interactively.
2 Comments
John D'Errico
on 10 Jan 2025
This IS a linear model, purely linear in the unknown parameters. Many people misunderstand the difference between a model that is linear in the parameters, and one that is intrinsicly nonlinear. There is no need to use a nonlinear curve fitting tool to fit such a model. Even backslash will do the trick.
By way of comparison, the model
z = a + b*x + c*y
is a classicaly linear model, in terms of how it behaves with respect to both x and y, but also in the parameters. If you plot the surface, this first model form will be a truly planar surface, with no curvature at all anywhere. However, change it slightly, like this:
z = a + b*x + c*exp(y)
is still a linear model in terms of the parameters a, b, and c. One would still employ the same linear modeling tools to estimate a, b and c. Similarly, the model
z = a + b*x + c*y + d*x*y
is nonlinear in terms of the shape, and how it behaves under changes in x and y, but it is purely linear in the parameters. Again, a tool as simple as backslash is capable of performing the fit, as well as many other tools that have no need to operate with truly nonlinear models in the parameters. In fact, this third example is one that is essentially the same as that in the question from @Learning.
If we change things just a bit more though,
z = a + b*x + c*exp(d*y)
now the model is nonlinear in both the unknown parameters (a,b,c,d) and in the shape of the resulting surface.
See Also
Categories
Find more on Get Started with Curve Fitting Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!