Curve fitting a complex function

I am trying to fit this function on my experimental data and receive the values of G and f. My data ought to look like this.
DR=exp(1i*f)/(E-Eg-1i*G)
Where Eg=1.18, DR and E are my measurements as arrays. f is the phase, E, Eg and G are all measured in eVs.
I am trying to utilize the LSQNONLIN function.
My question is: How do I have to define the function that needs to be inserted in LSQNONLIN in order to make it work?

2 Comments

Christos
Christos on 19 Sep 2014
Edited: Christos on 19 Sep 2014
Thank you,
I currently have these 2 scripts
1)fn.m
function deltaR1 = fn(E,G)
deltaR1=1/(E-1.18-1i*G);
and 2) fitting.m
E=E1;%E1 and DR1 are the names of my arrays
DR=DR1;
ft=lsqcurvefit('fn(E,G)');
f=fit(E,DR,ft);
A=coeffvalues(f);
fplot(f)
Matlab returns this error:
Error using lsqcurvefit (line 167) The input to LSQCURVEFIT should be either a structure with valid fields or consist of at least four arguments.
Error in fitting (line 6) ft=lsqcurvefit('fn,E,G');
The way you are invoking lsqcurvefit does not resemble any syntax in the documentation...

Sign in to comment.

 Accepted Answer

Matt J
Matt J on 19 Sep 2014
I think you should use lsqcurvefit instead. Other than that, see this recent related thread for dealing with complex valued functions,

More Answers (0)

Categories

Asked:

on 19 Sep 2014

Commented:

on 19 Sep 2014

Community Treasure Hunt

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

Start Hunting!