fminsearch for complex input for curve fitting

조회 수: 10 (최근 30일)
VISWANATH
VISWANATH 2014년 10월 23일
답변: VISWANATH 2014년 10월 29일
Dear all, I would like to fit experimental data with custom equations. I aim for the best fit of the theoretical curve to the experimental data by minimizing the residuals and use fminsearch to find minimal error.
The attached code works well for the real inputs
[R, fval] = fminsearch(err, 2.11)% finds the minimum of err But it fails for the
[R, fval] = fminsearch(err, 2.0-0.064i)
Help for fminsearch suggests to input split into real, imaginary parts and work to obtain the best fit. I have a little idea of doing this.
Could somebody help me with this problem? Thanks all.
  댓글 수: 1
VISWANATH
VISWANATH 2014년 10월 28일
I used
% Absolute error err = @ (n1) sum((abs(Rtot_s(n1)).^2 - S).^2 + (abs(Rtot_p(n1)).^2 - P).^2) % Minimum search for the error value x0 = complex(2.1,-0.07) [R, fval, exitflag] = lsqnonlin(@(x)err(x), real(x0),imag(x0) )
O/p R =
2.1084
fval =
28.0003
exitflag =
5.2915

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

답변 (2개)

Matt J
Matt J 2014년 10월 23일
편집: Matt J 2014년 10월 23일
Assuming your err function is real-valued,
[R, fval] = fminsearch(@(x) err( complex( x(1),x(2) ) ), [2.0,0.064])
  댓글 수: 4
VISWANATH
VISWANATH 2014년 10월 28일
When i used
[R, fval, exitflag] = lsqnonlin(@(x)err(x),complex(2.11,-0.064) )
gave the best values for fit but solution did not converge!!! Where do you think i am going wrong?
R =
2.1151 - 0.0640i
fval =
1.6100e-04
exitflag =
0.0127
Matt J
Matt J 2014년 10월 28일
The objective function must be a mapping from reals to reals. The initial guess x0 must also be real. So, complex(2.11,-0.064) is not legal as an initial point.

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


VISWANATH
VISWANATH 2014년 10월 29일
Hi Matt, It looks like the following example may help me to solve my problem. If you have any suggestions i would be glad to hear from you. Thanks a lot. Fit a Model to Complex-Valued Data

카테고리

Help CenterFile Exchange에서 Solver Outputs and Iterative Display에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by