Hyperbolic Least Squares Interpolation
1 回表示 (過去 30 日間)
古いコメントを表示
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
0 件のコメント
採用された回答
Star Strider
2016 年 9 月 10 日
編集済み: Star Strider
2016 年 9 月 10 日
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.
2 件のコメント
Star Strider
2016 年 9 月 10 日
My pleasure!
It should work for any well-characterised objective function you give it. The ‘B0’ vector has to have one element for each parameter that you want to estimate. The closer the initial estimates are to the ‘best’ fit (in both magnitude and sign), the better.
The Nelder-Meade algorithm used in fminsearch works best when it is minimising at most 7 parameters. Since it is derivative-free, it is more likely to converge than those that use a Jacobian matrix.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Calculus についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!