Surface fitting to data
Mostrar comentarios más antiguos
Folks,
I have a custom equation with z=a*x*y which I want to fit to some experimental data. The challenge is that
1) The fit z needs to be calculated for 8 different items. For simplicity, we use the same x,y for each item. Then the sum of these 8 items will compared against the experimental data to which I want to fit.
2) Is this possible either through a) SFTOOL and/or B) Programmable approach?
Thanks in advance B
4 comentarios
Sean de Wolski
el 11 de Oct. de 2013
I don't understand what the "8 items" are?
Do you have eight coefficients you're looking for? Please elaborate.
bugatti79
el 11 de Oct. de 2013
Sean de Wolski
el 11 de Oct. de 2013
It needs to be calculated 8 times for the same x and y on each but a different, z?
bugatti79
el 11 de Oct. de 2013
Respuestas (2)
Sean de Wolski
el 11 de Oct. de 2013
Editada: Sean de Wolski
el 11 de Oct. de 2013
The curve/surface fitting tool will work for you application. Design the fit within the application, then go to
File -> Generate Code
This will generate a function that you can then save and call with your new z-data. Each time it will return a fit object based on the new z.
Alternatively, you could use LinearModel.fit in the Statistics Toolbox
doc LinearModel.fit
or lsqcurvefit in the Optimization Toolbox, though this is overkill:
And "a" is the parameter to be fit? sftool seems like overkill for something that can be done as simply as
a=x(:).*y(:)\z(:);
5 comentarios
Matt J
el 11 de Oct. de 2013
So "a" is known a priori while x and y are to be determined by the fit?
bugatti79
el 11 de Oct. de 2013
bugatti79
el 11 de Oct. de 2013
Matt J
el 11 de Oct. de 2013
The solutions x,y for the equation
z=a*x*y
are not unique. You have 1 equation in 2 unknowns. So your problem appears under-specified.
Categorías
Más información sobre Get Started with Curve Fitting Toolbox en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!