【问题标题】:Polyfit for two variables两个变量的 Polyfit
【发布时间】:2014-10-15 21:42:47
【问题描述】:

我有一种数据,想找到给定数据的方程(poly coeff)。例如给定样本数据的方程很简单a^2*b+10

a\b    5    10    15
________________________
3|    55   100   145
4|    90   170   250
5|   135   260   385
6|   190   370   550

我检查了polfit,但它只适用于一个变量。

【问题讨论】:

    标签: matlab data-fitting


    【解决方案1】:

    正如Dusty Campbell 指出的,您可以使用fit 函数。为此,您必须使用数据构建网格

    a = [3 4 5 6];
    b = [5 10 15];
    [A, B] = meshgrid(a, b);
    C = (A.^2).*B + 10;
    

    然后使用自定义公式调用fit

    ft = fittype('p1*a^2*b + p2', 'independent',{'a','b'}, 'dependent','c');
    opts = fitoptions('Method','NonlinearLeastSquares', 'StartPoint',[0.5,1]);
    [fitresult, gof] = fit([A(:), B(:)], C(:), ft, opts);
    

    如您所见,求解器收敛到正确的解 p1 = 1p2 = 10

    【讨论】:

      【解决方案2】:

      polyfitn 应该有帮助...

      另一种方法:在非线性数据拟合的一般情况下,您可以轻松使用lsqnonlin

      【讨论】:

        【解决方案3】:

        看起来您需要来自Curve Fitting Toolboxfit 函数。或者polyfitn 可能由另一个 Matlab 用户创建和共享。

        【讨论】:

          猜你喜欢
          • 2015-08-14
          • 1970-01-01
          • 1970-01-01
          • 2015-03-30
          • 2012-11-21
          • 2023-03-08
          • 1970-01-01
          • 1970-01-01
          • 2020-11-27
          相关资源
          最近更新 更多