Fit sum parameters of an overdetermined system

2 Ansichten (letzte 30 Tage)
Marco Knobloch
Marco Knobloch am 11 Dez. 2019
Kommentiert: Marco Knobloch am 12 Dez. 2019
I have a function that uses 9 inputs (cts(1) to cts (9)) and provides 1 value as result. The function needs 4 parameters (c(1) to c(4)). The code of the function is:
fun = @(c,cts) ((c(1) .* (4-c(4))) ./ (c(2)+c(3) .* 4)) *cts(1) +...
((c(1) .* (5-c(4))) ./ (c(2)+c(3) .* 5)) *cts(2)+ ...
((c(1) .* (6-c(4))) ./ (c(2)+c(3) .* 6)) *cts(3) + ...
((c(1) .* (7-c(4))) ./ (c(2)+c(3) .* 7)) *cts(4) + ...
((c(1) .* (8-c(4))) ./ (c(2)+c(3) .* 8)) *cts(5) + ...
((c(1) .* (9-c(4))) ./ (c(2)+c(3) .* 9)) *cts(6) + ...
((c(1) .* (10-c(4))) ./ (c(2)+c(3) .* 10)) *cts(7) + ...
((c(1) .* (11-c(4))) ./ (c(2)+c(3) .* 11)) *cts(8) + ...
((c(1) .* (12-c(4))) ./ (c(2)+c(3) .* 12)) *cts(9)
I have 11 measured values with each 9 inputs. From this data set I want to fit the parameters c. Is there an algorithm which I can use for this problem? I already tried lsqcurvefit, but that atempt ended with the error:
Error using lsqcurvefit (line 263)
Function value and YDATA sizes are not equal.

Akzeptierte Antwort

Matt J
Matt J am 11 Dez. 2019
Bearbeitet: Matt J am 11 Dez. 2019
Your xdata should be a 9x11 matrix, your ydata should be a 1x11 vector, and the code for your function should look like this,
fun = @(c,cts) ((c(1) .* (4-c(4))) ./ (c(2)+c(3) .* 4)) *cts(1,:) +...
((c(1) .* (5-c(4))) ./ (c(2)+c(3) .* 5)) *cts(2,:)+ ...
((c(1) .* (6-c(4))) ./ (c(2)+c(3) .* 6)) *cts(3,:) + ...
((c(1) .* (7-c(4))) ./ (c(2)+c(3) .* 7)) *cts(4,:) + ...
((c(1) .* (8-c(4))) ./ (c(2)+c(3) .* 8)) *cts(5,:) + ...
((c(1) .* (9-c(4))) ./ (c(2)+c(3) .* 9)) *cts(6,:) + ...
((c(1) .* (10-c(4))) ./ (c(2)+c(3) .* 10)) *cts(7,:) + ...
((c(1) .* (11-c(4))) ./ (c(2)+c(3) .* 11)) *cts(8,:) + ...
((c(1) .* (12-c(4))) ./ (c(2)+c(3) .* 12)) *cts(9,:)

Weitere Antworten (0)

Kategorien

Mehr zu Get Started with Curve Fitting Toolbox finden Sie in Help Center und File Exchange

Produkte


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by