Clear Filters
Clear Filters

finding fit parameters between two functions

5 views (last 30 days)
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 Comments
Eli
Eli on 23 Dec 2023
Edited: Eli on 23 Dec 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 on 23 Dec 2023
Is the function that gives a fit just a single mathematical formula? If so, what is it?

Sign in to comment.

Accepted Answer

Torsten
Torsten on 23 Dec 2023
Edited: Torsten on 23 Dec 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 Comments
Eli
Eli on 24 Dec 2023
Edited: Eli on 24 Dec 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 on 24 Dec 2023
If you use "optimoptions" instead of "optimset", the name is "FiniteDifferenceStepSize".
Glad to hear that it seems to work now.

Sign in to comment.

More Answers (0)

Categories

Find more on Model Predictive Control Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!