MATLAB: Hyperbolic Least Squares Interpolation

hyperbolic functionleast squares interpolation

Hello Everybody,
I have got 4 datapoints from trials. They seem to be aligned in a hyperbolic manner. So what i want to do is to find the least squares regression of those values with a kind of a/(bx+c)-Function, where the c-value is equal to zero.
Does matlab provide a sort of standard-function like polyfit for such a problem? Or is it possible to modify the data in a way (coordinate-transformation) to apply polyfit?
Thanks for your help! Georg

Best Answer

You can use core MATLAB functions to do the regression:
x = ...; % Independent Variable
y = ...; % Dependent Variable
fcn1 = @(b,x) b(1)./(b(2).*x + b(3)); % Objective Function #1
fcn2 = @(b,x) b(1)./(b(2).*x); % Objective Function #2
SSECF = @(b) sum((y - fcn2(b,x)).^2); % Sum-Squared-Error Cost Function (Use ‘fcn2’ Here)
B0 = [1; 1]; % Initial Parameter Estimates
[B,SSE] = fminsearch(SSECF, [1; 1]); % Estimate Parameters
xv = linspace(min(x), max(x));
figure(1)
plot(x, y, 'bp')
hold on
plot(xv, fcn2(B,xv), '-r')
hold off
grid
I tested this with random vectors and it ran without error.
EDIT Note that the two-parameter model you want requires only one parameter. A simple ratio (or product) of parameters will not uniquely identify either of them, only the ratio (or product). The three-parameter model actually makes sense.