使用matlab进行2D拟合?

时间:2014-05-06 09:56:58

标签: matlab 2d best-fit geometry-surface

这可能听起来像一个老问题。我以为我知道代码,但运行它并没有给我预期的值。

我的问题是:

目标函数:f = C / (x ^ p * y ^ q)

(如果您对加工有所了解,可以说这是泰勒的刀具寿命方程式)

xy是自变量; f是因变量; Cpq是系数。

我有以下三组([x, y], f)值,请参阅“exp_result”。

我正在为三组价值观寻找最合适的表面。

这是我的代码:

通过运行它我得到:

  • C 1.224E4
  • p 2.025
  • q 5.688

所以我最适合表面的方程是T = 1.224E4 / (x ^ 2.025 * y ^ 5.688)

然而,至少我发现这个等式更适合三组数据: T = 9.83E7 / (x ^ 3.39 * y ^ 2.63)

通过插入xy,我可以使用此公式更接近f。任何人都知道我做错了什么?

任何建议都表示赞赏。谢谢!

exp_result = [153.6   0.51  22.47; 192.01  0.61  6.52; 230.42  0.51  5.58];

f_exp = fittype('C / (x ^ p * y ^ q)', 'coefficients', {'C', 'p', 'q'}, 'independent', {'x', 'y'}, 'dependent', {'f'});

f_exp_coef = fit([exp_result(:,1), exp_result(:, 2)], exp_result(:, 3),f_exp);

1 个答案:

答案 0 :(得分:0)

C的比例与其他两个参数非常不同,因此更难以适应。

(1)通过给出更接近的初始猜测

或(2)在日志条件中重写函数

log(f)= log(C) - p * log(x) - q * log(y)或f'= c - p * x' - q * y'

使用[log(f)log(x)log(y)],你可以得到相同范围内的c,p,q [1 10],这有希望让你更适合。