Fitting and imposing certain range in variables

5 visualizaciones (últimos 30 días)
Vogel
Vogel el 24 de Jul. de 2018
Editada: Matt J el 24 de Jul. de 2018
I am trying to fit surface data z=f(x,y) to a function with several parameters using the "fit" function of Matlab.
The resulting function must accomplish that 0<z<1 for the range 0<x<1 at any y. Is it possible to apply it? I have only seen the possibility to impose a range for the parameters, but not the variables.
Thank you!

Respuesta aceptada

Matt J
Matt J el 24 de Jul. de 2018
Editada: Matt J el 24 de Jul. de 2018
No, it is not possible to apply that requirement directly through the fit() function. There are perhaps 3 possible approaches you can take,
  1. Do some pre-analysis and find a subspace of values for the parameters theta that implies these bounds on z.
  2. Choose f() to be of a form that is innately and globally bounded, e.g., z=arctan(g(x,y;theta))/pi + 0.5. This is the most common approach when f(x,y,theta) must satisfy bounds over a continuum of x and y.
  3. Use fmincon() or ga() instead of fit(). You can define any constraints you want in those solvers, in particular 0<=f(x,y; theta)<=1. The problem is that this constraint will often correspond to disjoint, non-connected regions in the feasible parameter space theta. It can be hard for the solvers to find global minima over non-connected feasible sets.

Más respuestas (0)

Categorías

Más información sobre Get Started with Curve Fitting Toolbox en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by