# Fitting data with custom function defined with recursion loop

3 views (last 30 days)
Bill Francois on 15 May 2015
Answered: Titus Edelhofer on 15 May 2015
Hi
I am trying to fit data with a function of this form: the function is defined on strictly positive values. In 0, the function is equal to 1-(the sum of the values it takes for x from 1 to 10)
for example, I tried with the function:
function[b]=Function2(x,a,c)
if x>0
b=a*(x+c);
elseif x<0
b=0;
else
y(1)=0;
for i=2:10
y(i)=y(i-1)+Function2(i,a,c);
end
b=1-y(10);
end
And used data defined so that I knew what a and c parameters to expect. The curve fitting tool replys to me that "Function value and YDATA sizes are not egal"
When I suppress the loop for x=0 that uses the function Function2 inside it's own expression, the curve fitting tool works (the function is then just a piecewise function), but then it gives a fitting curve that does not correspond at all to the piecewise function I expect.
How can I fit this function?
Bill
Walter Roberson on 15 May 2015
As a debugging step, inside the function please display
size(x), size(a), size(c)

Titus Edelhofer on 15 May 2015
Hi Bill,
I guess Curve Fitting tool will call your function with x being a vector and not a scalar. In this case your function will not work, since it's written for scalar x only. If length(x)>1 you should loop over the vector x.
Titus