How can I find X for given Y value in a fitted curve?
Show older comments
Hi everyone.
I would like to know how to find the X value of a fitted curve given an Y value.
I had some data and fitted them using Gaussian fit. Now they look like this in my workspace:

An example of these functions as seen in the Command Window is:
f50 =
General model Gauss1:
f50(x) = a1*exp(-((x-b1)/c1)^2)
Coefficients (with 95% confidence bounds):
a1 = 7.81 (7.602, 8.018)
b1 = 1.497e-013 (-0.001774, 0.001774)
c1 = 0.08174 (0.07924, 0.08425)
Does someone wonder how to do it?
I really appreciate any help you can provide.
Pablo
Accepted Answer
More Answers (2)
Andrei Bobrov
on 3 Mar 2015
other variant
X = arrayfun(@(y)fzero(f50(x)-y,1),Y);
3 Comments
Brilliant! It took me a while to figure out how to use this. I had to change it a bit to parameterize the X and Y variables index:
X2= arrayfun( @(t)fzero( @(x)fun(x)-Y(t), X(t)) , 1:length(X));
Also zero is a solver, so for best result don't forget to normalize your data.
Pen-Li (Ben) Yu
on 12 Jul 2018
Below is my modification to Andrei's solution:
X = arrayfun(@(y)fzero(@(x)f50(x)-y,x0),Y)
x0 is the initial value for the fzero function Y can be a scalar or a vector
Christy Zheng
on 17 May 2020
Edited: Christy Zheng
on 17 May 2020
I'm sorry for my lack of understanding, but to clarify X is the value you are looking for given a Y on the fitted curve. What are x and y referring to?
Ingrid
on 3 Mar 2015
you can do this with the function
Y = feval(cfit,X);
which you could have easily found yourselve if you would have typed
doc cfit
3 Comments
Pablo Martínez Filgueira
on 3 Mar 2015
Ingrid
on 3 Mar 2015
I have read your question but overlooked the fact that you were looking for the X values and not the Y values
in this case you might find this link helpful:
Pablo Martínez Filgueira
on 4 Mar 2015
Categories
Find more on Get Started with Curve Fitting Toolbox in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!