MATLAB Answers


fminsearch for complex input for curve fitting

Asked by VISWANATH on 23 Oct 2014
Latest activity Answered by VISWANATH on 29 Oct 2014
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 Comment

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 =
fval =
exitflag =

Sign in to comment.

2 Answers

Answer by Matt J
on 23 Oct 2014
Edited by Matt J
on 23 Oct 2014

Assuming your err function is real-valued,
[R, fval] = fminsearch(@(x) err( complex( x(1),x(2) ) ), [2.0,0.064])


Show 1 older comment
Means little. You haven't shown us what you've actually done. You haven't shown what you've actually observed.
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 =
exitflag =
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.

Sign in to comment.

Answer by VISWANATH on 29 Oct 2014

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


Sign in to comment.