From: Arthur Goldsipe on
"Luca Cerone" <luca_cerone#_remove_this#@yahoo.it> wrote in message <hvta8b$jdv$1(a)fred.mathworks.com>...
> > So after a simulation you should convert the non-dimensionalized results back >into the appropriate units using the scaling parameters. So your objective >function will need to do both the simulation and the rescaling.
> Actually I'm looking for the parameters, and also measurements have not a unit so the rescaling is not possible if I work with the dimentionless model.

I think we have some sort of misunderstanding. I believe that if you have a method to fit your original model to the data, then there is a method you can use to fit the dimensionless model to the data. That method may require you to estimate additional parameters that are used to make the data dimensionless but are not used for solving the ODEs. (In this case, making the model dimensionless may mostly serve to keep the ODE well-scaled so that the numerical solver is well-behaved. It may or may not help with the identifiability of parameters.)

Let me give you a very simple example. Suppose you want to fit a simple exponential decay to measurements of concentrations at various times. The ODE for this model is:

dy/dt = -k*y, y(0) = y0

You can non-dimensionalize that by defining z = y/y0 and u = k*t, so that the ODE is
dz/du = -u, u(0) = 1

You could fit use the dimensionless model for fitting as follows:

p = fminsearch(@myfit,[1 1]);
y0_optimal = p(1);
k_optimal = p(2);

where myfit is defined as follows:

function error = myfit(p)
y0 = p(1);
k = p(2);
t_experimental = [1;2;3;4];
y_experimental = [9;8;7.5;7];
u_experimental = k*t_experimental;
z_experimental = y_experimental/y0;
u0 = 1;
[u,z] = ode45(@(u,z)-u, u_experimental, u0);
y = y0*z;
error = sum( (y-y_experimental).^2 );

Does that make sense?

--Arthur
From: Luca Cerone on
Thanks Arthur,
your example make sense and was quite helpful.
Cheers, -Luca