【问题标题】:2D fitting using matlab?使用matlab进行二维拟合?
【发布时间】:2014-06-22 20:57:50
【问题描述】:

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

我的问题是:

目标函数: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).

通过插入x's 和y's,我使用这个等式更接近f's。有人知道我哪里做错了吗?

感谢任何建议。谢谢!

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);

【问题讨论】:

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


    【解决方案1】:

    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)],可以得到在[1 10]相同范围内的c、p、q,希望能更适合你。

    【讨论】:

      猜你喜欢
      • 2019-02-08
      • 2015-04-05
      • 1970-01-01
      • 2017-03-13
      • 1970-01-01
      • 2017-11-27
      • 2023-03-06
      • 1970-01-01
      • 2021-03-12
      相关资源
      最近更新 更多