I have a doubt regarding declaration of a function, kindly conside the following code
fun = @GVFsqrt_estimt = fminsearch(@(theta)ODE_fit(fun,t,y,Q,theta(1),theta(2), iniVal), theta0);
..
function err = ODE_fit(fun, exp_t, exp_y, Q, theta(1), theta(2), iniVal)% exp_y = Experimental observation at time exp_t
[t,y] = ode45(@(t,X)fun(t,X,n, S0, Q, theta(1),theta(2)),exp_t,iniVal); err = sum(sum((y-exp_y).^2)); % compute error between experimental y and fitted y
end
..
function dy = GVF(x, y, Q, T, g)% T = theta(1)
% g = theta(2);
A = y*T;V = Q/A;P = T+2*y;R = A/P;Sf = (.14*V)^2/(R^(4/3));Fr = V/sqrt(g*y);dy = (Sf)/(1-Fr^2);end
..
The above does not work, but the following does: Is there a way to make the above way function? Thanks
sqrt_estimt = fminsearch(@(theta)ODE_fit(fun, t, y, Q, theta, iniVal), theta0);
..
function err = ODE_fit(fun, exp_t, exp_y, Q, theta, iniVal)% exp_y = Experimental observation at time exp_t[t,y] = ode45(@(t,X)fun(t,X,n, S0, Q, theta(1),theta(2)),exp_t,iniVal); err = sum(sum((y-exp_y).^2)); % compute error between experimental y and fitted yend
..
function dy = GVF(x, y, Q, T, g)T = theta(1)g = theta(2);A = y*T;V = Q/A;P = T+2*y;R = A/P;Sf = (.14*V)^2/(R^(4/3));Fr = V/sqrt(g*y);dy = (Sf)/(1-Fr^2);end
Best Answer