Problem passing function to lsqnonlin with costant parameters

Hello, i have this function to pass to lsqnonlin :
[val,Jac] = myfunction(x,par1,par2,par3)
my function computes already the Jacobian that im planning to pass to slqnonlin and is essential.
x is the optimization variable and par1,par2... are constant parameters required to evaluate the function and are computed separately.
The problem then is how i declare x as the only optimization variable?
I can't use function handle otherwise i would lose my multi ouput;
I can't declare par1,par2,... as globals cause myfunction has parallelization in it;
I could pass the code to evaluate pars into myfunction but it would add not necessary heavy computation into each iteration of lsqnonlin which i'd like to avoid;
Any other ideas? Thank you

 채택된 답변

Matt J
Matt J 2019년 1월 15일
편집: Matt J 2019년 1월 15일
par1=______;
par2=______;
par3=______;
lsqnonlin(@(x) myfunction(x,par1,par2,par3), __________);

댓글 수: 6

This would be perfect if i had only one output from myfunction but in this way it doesn't recognize the Jacobian (as second output). For example i tried to just compute:
out = @(x) myfunction(x,par1,par2,par3)
out(xgiven)
and it simply gave me the value omitting the jacobian.
Am i wrong ?
Eugenio Grabovic
Eugenio Grabovic 2019년 1월 15일
편집: Eugenio Grabovic 2019년 1월 15일
Edit: i found another way thanks to your link given Passing Extra Parameters. by using nested functions. This way the parameters act as global inside the function and somehow allow the parallelization. Thanks
There shouldn‘t have been issues with a 2nd output argument either way. I’d have to see your complete code to say why there was.
Hi, will this "lsqnonlin(@(x) myfunction(x,par1,par2,par3), __________);" also make use of the second output of "myfunction", i.e. Jac?
@Eze Far Yes, it will.

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Problem-Based Optimization Setup에 대해 자세히 알아보기

질문:

2019년 1월 15일

댓글:

2023년 7월 5일

Community Treasure Hunt

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

Start Hunting!

Translated by