Fitting and imposing certain range in variables

5 ビュー (過去 30 日間)
Vogel
Vogel 2018 年 7 月 24 日
編集済み: Matt J 2018 年 7 月 24 日
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!

採用された回答

Matt J
Matt J 2018 年 7 月 24 日
編集済み: Matt J 2018 年 7 月 24 日
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.

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeGet Started with Curve Fitting Toolbox についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by