fitting 3 sets of data simultaneously using "lsqcurvefit"

1 view (last 30 days)
I have a set of data in triplicates (attached). I want to fit the exponential part of these 3 sets simultaneously using "lsqcurvefit" and get one x(1) and x(2). I have included "t" and "or" data in the attached file and here is my function:
function y=or(x,t)
y=((0.282*x(2))-0.24)*x(1)*exp((x(2)-0.24)*t)
I managed to fit each data set individually and average x(1) and x(2) and calculte the STdev but if I could fit 3 sets simultenausly using "lsqcurvefit" would be better.
I would be grateful if you kindly help me.

Answers (2)

Torsten
Torsten on 18 May 2022
Define
T = [t1;t2;t3]
and
OR = [or1;or2;o3]
and treat
[T,OR]
just like you treated
[t1;or1],[t2;or2],[t3;or3]
.
What's the problem ?
  9 Comments
Sara
Sara on 19 May 2022
column, it worked but now gives error on
Y1 = Y(1:numel(t(trangemin:rangemax)));
Torsten
Torsten on 19 May 2022
Edited: Torsten on 19 May 2022
Y is a numel(t(tangemin:rangemax)) x 3 - matrix.
So
Y1 = Y(:,1)
Y2 = Y(:,2)
Y3 = Y(:,3)
guessing you used the code I submitted.

Sign in to comment.


Sara
Sara on 19 May 2022
ok, sorry many comments so was confused:(
I think this is based on your comment:
rangemin = 173;
rangemax = 212;
xprime(1)=100;
xprime(2)=7;
TDATA = [t(rangemin:rangemax);t(rangemin:rangemax);t(rangemin:rangemax)];
ORDATA = [ordata(rangemin:rangemax,1);ordata(rangemin:rangemax,2);ordata(rangemin:rangemax,3)];
x = lsqcurvefit(@or,xprime,TDATA,ORDATA);
Y = or(x,TDATA);
Y = reshape(Y,numel(t(tangemin:rangemax)),3);
function y=or(x,t)
y=((0.282*x(2))-0.24)*x(1)*exp((x(2)-0.24)*t);
end
but still gives error on Y = reshape(Y,numel(t(tangemin:rangemax)),3);

Categories

Find more on Get Started with MATLAB in Help Center and File Exchange

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!