Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
NCTM or The Math Forum.


Math Forum
»
Discussions
»
Software
»
comp.softsys.matlab
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



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



