Dear all,
i am fitting an implicit function (SMA Isotherm) z(x,y) with lsqcurvefit but i wonder if there is a better solution. My data is of different size z.B x(10x1) y(7x1)!
i make an explicit expression with fsolve by looping over x and y like:
for n=1:length(x)
for i=1:length(y)
z(i,n)=fsolve(@(z)SomeExpression-z,0.001);
end
end
I then call it like
fitParam=lsqcurvefit(@(param,x)explizit_function(param,x,y),param,xmeasured,zmeasured)
Any hints are appreciated.
Kind regards
Moritz

 Akzeptierte Antwort

Matt J
Matt J am 15 Dez. 2013
Bearbeitet: Matt J am 15 Dez. 2013

0 Stimmen

If your implicit equation is
F(params,x,y,z)=0
and you have known data points (X(i),Y(i),Z(i)) that you want to fit, I think you would just use FSOLVE to solve the system of N equations
F(params,X(i),Y(i),(i))=0, i=1...N
for params.

Weitere Antworten (1)

Moritz
Moritz am 15 Dez. 2013

0 Stimmen

Yes, you are right. I did not see the forest because of all the trees. Actually it is a lot faster this way.
I use fmincon with constraints in order to avoid complex values. Instead of 16 seconds it now takes 0.6 seconds.
Thank you for this eye opener...

Kategorien

Gefragt:

am 14 Dez. 2013

Beantwortet:

am 15 Dez. 2013

Community Treasure Hunt

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

Start Hunting!

Translated by