How to concatenate output of objective function for lsqcurvefit?

조회 수: 3(최근 30일)
Hi All,
I have an objective function of the form
function [I_num] = PSw_EK_v7(k_m, s_bulk)
k_m is the variable I want to optimize while s_bulk is an array of input data which I want to feed the input function. I am using the lsqcurvefit/lsqnonlin function to fit my simulation to experimental data of the form.
s_bulk = [0, 5e-06, 10e-06, 20e-06, 50e-06, 100e-06];
I_exp = [0, 2.35e-03, 2.7e-03, 3.125e-03, 3.29e-03, 3.25e-03]
Now what I am trying to do is feed the lsqcurvefit function my s_bulk array and get an array of I_num values but I am having difficulty doing that. I have tried arrayfun function but that does not seem to work inside the lsqcurvefit function.
So, to put things short I want to give my s_bulk array and get an array of I_num because that is what lsqcurvefit expects.
[k_m,resnorm,residual,exitflag,output]=lsqcurvefit(@PSw_EK_v7, k_m_0, s_bulk, I_exp, lb, ub, options);
  댓글 수: 4
Hashim 2021년 11월 21일
lb = 1e06;
ub = 1e09;
k_m_0 = 1.9e07;

댓글을 달려면 로그인하십시오.

채택된 답변

Matt J
Matt J 2021년 11월 21일
c0 = [ic_arg{1}(x).'; ic_arg{2}(x).'; ic_arg{3}(x).'];
  댓글 수: 19
Matt J
Matt J 2021년 11월 23일
편집: Matt J 2021년 11월 23일
Yes, it will be 6 times slower because lsqcurvefit needs to run the ODE solver for each i=1...6.

댓글을 달려면 로그인하십시오.

추가 답변(0개)

Community Treasure Hunt

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

Start Hunting!

Translated by