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. A condition that applies for only the first row of the input is that
((c(1) .* (4-c(4))) ./ (c(2)+c(3) .* 4)) *cts(1,1) must be greater than ((c(1) .* (5-c(4))) ./ (c(2)+c(3) .* 5)) *cts(2,1). Is there an algorithm which can do that? I already tried lsqcurvefit without this constraint, but the fitted parameters do not follow the condition.
Thank you for your time.
Best Answer