Tags: define, etta, fminsearch, function, gammai, lambda, matlab, multiple, multipleparameters, parameter, programming, regarding, runnign, themselves, theta, vectors

multiple parameter fminsearch

On Programmer » Matlab

4,533 words with 3 Comments; publish: Wed, 07 May 2008 17:59:00 GMT; (200156.01, « »)

I have a question regarding runnign fminsearch with multiple

parameters that are vectors themselves: theta etta lambda and gamma

I define a function m2 as:

function [min]=m2(theta, etta, lambda, gamma)

but then when I call it:

[theta, etta, lambda,

gamma]=fminsearch(.matlab.questionfor.info.m2,[theta0;etta0;lamb

da0;gamma0],opts);

it gives me an error message saying that "Input argument 'theta' is

undefined."

am I misspecifying the fminsearch?

thanks,

olga

All Comments

Leave a comment...

  • 3 Comments
    • olga gorbachev wrote:

      >

      > I have a question regarding runnign fminsearch with multiple

      > parameters that are vectors themselves: theta etta lambda and gamma

      > I define a function m2 as:

      > function [min]=m2(theta, etta, lambda, gamma)

      > but then when I call it:

      > [theta, etta, lambda,

      > gamma]=fminsearch(.matlab.questionfor.info.m2,[theta0;etta0;lamb

      da0;gamma0],opts);

      > it gives me an error message saying that "Input argument 'theta' is

      > undefined."

      > am I misspecifying the fminsearch?

      > thanks,

      > olga

      Assume that each vector has 5 elements

      in it.

      Then fminsearch will see a vector of 20

      parameters. (Again, this is ludicrous.

      Fminsearch is typically limited to

      problems with maybe 6 unknowns in total.)

      Fminsearch will try to optimize the

      parameter space. But it will pass in a

      SINGLE vector to M2, NOT 4 vectors.

      Your function M2 needs to unpack the

      vectors itself.

      HTH,

      John D'Errico

      #1; Wed, 07 May 2008 18:01:00 GMT
    • Olga,

      Syntax for m2() should be as follows:

      function ll = m2(p)

      where p - complete vector of parameters. You might also pass

      additional arguments in fminsearch() and they will be passed into m2():

      function ll = m2(p, data1, data2 ...)

      Simplex method utilized by fminsearch() doesn't require derivatives

      of m2() but if they exist a better algorithm can be used.

      Hope it is help,

      Kirill

      olga gorbachev wrote:

      > I have a question regarding runnign fminsearch with multiple

      > parameters that are vectors themselves: theta etta lambda and gamma

      > I define a function m2 as:

      > function [min]=m2(theta, etta, lambda, gamma)

      > but then when I call it:

      > [theta, etta, lambda,

      > gamma]=fminsearch(.matlab.questionfor.info.m2,[theta0;etta0;lamb

      da0;gamma0],opts);

      > it gives me an error message saying that "Input argument 'theta' is

      > undefined."

      > am I misspecifying the fminsearch?

      > thanks,

      > olga

      #2; Wed, 07 May 2008 18:02:00 GMT
    • Kirill wrote:

      >

      > Olga,

      > Syntax for m2() should be as follows:

      > function ll = m2(p)

      > where p - complete vector of parameters. You might also pass

      > additional arguments in fminsearch() and they will be passed into

      > m2():

      > function ll = m2(p, data1, data2 ...)

      > Simplex method utilized by fminsearch() doesn't require derivatives

      > of m2() but if they exist a better algorithm can be used.

      > Hope it is help,

      > Kirill

      > olga gorbachev wrote:

      > gamma

      'theta'

      > is

      >

      Thank you all for replying. I still haven't been able to solve the

      problem. I tried to use function handle, but I think I am misusing

      it. I am new to Matlab and any help is greatly appreciated. This is

      what I tried:

      I have a function file new2.m where I have a system of equations (225

      of them) to solve for 33 unkowns called theta. the problem, as i

      already explained, is that 2 paraments within that theta are actually

      fixed.

      then I call this function from main.m where i specify an initial

      vector of parameters

      *******************

      clear

      load datag

      tmin=1969; %the date of the first observation

      tmax=1977; % the date of the last obs.

      T=tmax-tmin+1;

      bmin=1920; %first cohort is born in this year

      bmax=1940; %last cohort is born in this year

      B=((bmax-bmin)/5)+1; %the number of cohorts in the sample

      zu1=zeros(1,9);

      ro=1;

      zu2=ones(1,2*T);

      zu3=zeros(1,B);

      theta0=[zu1 ro zu2 zu3]'; %initial parameter vector

      p1969=1;

      L1970=1;

      M2 =

      .matlab.questionfor.info.new2:new2(theta0(1:10),p1969,theta0(12:

      11+T),L1970,theta0(12+T+1:2*T+

      10+B));

      [theta fval]=fminsearch(M2,theta0,options);

      **************

      i know that line starting with M2 is wrong, but I dont' know how to

      fix it. any ideas?

      #3; Wed, 07 May 2008 18:03:00 GMT