Passing variable array in fmincon

Hi all,
I am trying to do a non linear optimization for a function which takes parameters and variables that come from my dataset.
function [q] = negloglike(x, e, c, G, spelldur1, j2u, j2j)
% e, c, G, spelldur1, j2u, j2j are variables from my data - all 2263 X 1 double arrays
%%lambda0 = x(3)
%lambda1 = x(1)
%delta = x(2)
a = x(1)/x(2)
b1 = 1 + a.*G
b2 = G + a.*G
F_emp = b2./b1
tempp = x(2) + x(1) - x(1).*F_emp
q1 = -e.*(log(x(3))-log(x(3) + x(2)) + (1-c) .*log(tempp) ...
- spelldur1.*tempp + j2u.*log(x(2)) - j2u.*log(tempp) + j2j.*log(x(1)) + ...
j2j.*log(1-F_emp) - j2j.*log(tempp)) - ...
(1-e).* (log(x(2)) - log(x(2) + x(3)) + (1-c).*log(x(3)) - spelldur1.* x(3))
q = sum(q1)
end
So, what I need is a negloglike as a function of just x, where then I can give initial values x = [0.1 0.1 0.1] and use fmincon to find the optimum values of parameter x.
Sorry if this is rudimentary. I am only a day old to Matlab! Thanks a lot in advance!
Yuvi

Answers (1)

You are doing well for just a day with MATLAB! All you need to do is set your objective function as the following function handle:
fun = @(x) negloglike(x, e, c, G, spelldur1, j2u, j2j)
The variables e, c, G, spelldur1, j2u, and j2j must already be in your workspace before you call this assignment. Then you can use fmincon to optimize fun. For more information, see Passing Extra Parameters.
Alan Weiss
MATLAB mathematical toolbox documentation

1 Comment

Thanks Alan! This is exactly what I ended up doing. I created a m file for negloglike and then just called negloglike in my main script file.

Sign in to comment.

Asked:

on 11 Nov 2015

Commented:

on 13 Nov 2015

Community Treasure Hunt

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

Start Hunting!