Azzera filtri
Azzera filtri

finding fit parameters between two functions

5 visualizzazioni (ultimi 30 giorni)
Hello
I have a script, where i have a simulation that creates a function.
On the other hand I have a measurement. They don't fit and I want to use fminsearch to try to find the variables that can make them fit.
The idea is to find the variables N_set , A_dir, A_seq and maybe some offset in time (x axis)and Const (y axis).
Would appriciate some help.
The simulation and data are presented. this is example of one specific value set, where we can see the don't have a very good overlap.
Would appriciate your help.
Thanks.
load('matlab1.mat')
untitled5()
Unrecognized function or variable 'time_average_data'.

Error in untitled5 (line 169)
hold on; plot(time_average_data,average_data_set-min(average_data_set),'LineWidth', 1.5)
  3 Commenti
Eli
Eli il 23 Dic 2023
Modificato: Eli il 23 Dic 2023
So I just played with the parameters by hand. that's why i need parameter optimization.
Without this, it's totally off so more precise fit will bring me closer to my real parameters. (will have many similar experiments so optimization should help a lot)
Image Analyst
Image Analyst il 23 Dic 2023
Is the function that gives a fit just a single mathematical formula? If so, what is it?

Accedi per commentare.

Risposta accettata

Torsten
Torsten il 23 Dic 2023
Modificato: Torsten il 23 Dic 2023
Make a function that - given tau and the parameters you want to fit - returns I_m(tau).
Then look at the examples for "lsqcurvefit" to see how you can use this function as the "fun" in the call to the optimizer.
Use the parameters you fitted by hand as vector of initial values for the parameter vector.
  8 Commenti
Eli
Eli il 24 Dic 2023
Modificato: Eli il 24 Dic 2023
Perfect!
That solved it.
The name by the way is " FinDiffRelStep" instead of "FiniteDifferenceStepSize"
I used than (didn't find how to only set one variable X(5)) :
options = optimset('FinDiffRelStep', [sqrt(eps) sqrt(eps) sqrt(eps) sqrt(eps) 1e-2 sqrt(eps)]);
x = lsqcurvefit(@untitled5, x0, time_average_data, average_data_set,lb,ub,options);
And, it seems to start changing. thanks.
Torsten
Torsten il 24 Dic 2023
If you use "optimoptions" instead of "optimset", the name is "FiniteDifferenceStepSize".
Glad to hear that it seems to work now.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Model Predictive Control Toolbox in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by