Fit sum parameters of an overdetermined system
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Marco Knobloch
le 11 Déc 2019
Commenté : Marco Knobloch
le 12 Déc 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.
0 commentaires
Réponse acceptée
Matt J
le 11 Déc 2019
Modifié(e) : Matt J
le 11 Déc 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,:)
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Get Started with Curve Fitting Toolbox dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!