Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: passing external parsmeter to nlmefitsa and ode45
Replies: 2   Last Post: Nov 28, 2012 3:32 AM

 Messages: [ Previous | Next ]
 Edoardo Posts: 8 Registered: 3/3/12
passing external parsmeter to nlmefitsa and ode45
Posted: Nov 19, 2012 3:33 AM

Dear all,

I am facing the following problem: how to pass external parameters to the
@mymodel function used in the nlmefitsa function? (see below for specifications)

nlmefitsa(X,Y,Group,[],@mymodel,K0,...);

X is a 100 x 1 vector with time points (1:10) for 10 subjects
X is a 100 x 1 vector with measured concentration for 10 subjects

The mymdoel fucntion to be passed to the nlmefitsa solves a differential equation
trough the ode45. Anyway I need to pass the intial values "xin" (each individual has a different
starting value) to teh ode45 and moreover I need to pass also the matrix "external" which contains
data (NOT to be fitted) nedeed to the model. As I have 10 subjects I have 10 different "xin" vectors and matrices
"external" to be passed through the nlmefitsa to mymodelfun. How to pass this to nlmfitsa and how to tell him wihcih one to use?

Summarizing the problem is how to properly write the model function to be passed to nlmfitsa

I have tried everything I could think off but I am stuck. Does anybody have an idea? Or, is this possible to do?

Many thanks, any help is really appreciated
Edo

function YOUT = mymodel(K,xin,external)

[YOUT] = ode45(@(t,y) mydiffeq(t,y,K,external), [1 10], xin);

end

function dy = mydiffeq(t,y,K,external)

k1 = K(1);
k2 = K(2);
k3 = K(3);

time = external(:,1); %time points ext
conc = external(:,2); %concentrations

GG = interp1(time,conc, t);

% ode
dy = zeros(1,1);
dy(1) = (k1/(k2 + GG^k3))*y(1);
end

Date Subject Author
11/19/12 Edoardo
11/27/12 Steven Lord
11/28/12 Edoardo