Displaying fit function on the plot

18 views (last 30 days)
uzzi
uzzi on 13 Apr 2023
Answered: Steven Lord on 13 Apr 2023
Hello,
I have a fit function which is displayed below. There is a plot with this fitted function. Are there anyway that I can display the "f(x) = -0,02462x^2 - 8.336x -747.7" on the plot?
If someone know how to do it, pls help me.

Answers (1)

Steven Lord
Steven Lord on 13 Apr 2023
We can use some of the methods of the object returned by fit to get the pieces we need to display it.
x = (1:10).';
y = x.^2 + 2*x - 3 + randn(size(x));
P = fit(x, y, 'poly2')
P =
Linear model Poly2: P(x) = p1*x^2 + p2*x + p3 Coefficients (with 95% confidence bounds): p1 = 0.9567 (0.8564, 1.057) p2 = 2.46 (1.328, 3.592) p3 = -3.834 (-6.544, -1.124)
The formula method gives us the expression for the fit with the coefficient names.
F = formula(P)
F = 'p1*x^2 + p2*x + p3'
The coeffnames method gives us the coefficient names and the coeffvalues method the coefficient values.
N = coeffnames(P);
V = coeffvalues(P);
Now we can use string operations to replace the coefficient names with the coefficient values (converted to strings.)
formulaWithValues = replace(F, string(N).', string(V))
formulaWithValues = '0.95673*x^2 + 2.4599*x + -3.834'
That + followed by a - for the constant term is a little awkward looking. Let's fix that.
formulaWithValues = replace(formulaWithValues, "+ -", "- ")
formulaWithValues = '0.95673*x^2 + 2.4599*x - 3.834'
Now we could use formulaWithValues to add a legend entry for the fitted curve (or with the text function to put it in the axes itself.)
plot(x, y, 'o', DisplayName = 'raw data')
hold on
xx = 1:0.25:10;
plot(xx, P(xx), DisplayName = formulaWithValues)
legend show
This gets a little more complicated if your fit has problem-dependent parameters, but it wouldn't be that difficult to use probnames and probvalues in addition to coeffnames and coeffvalues.

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!