Polyfit为两个变量

时间:2014-08-22 05:35:59

标签: matlab data-fitting

我有一种数据,想要找到给定数据的方程(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,但它仅适用于一个变量。

3 个答案:

答案 0 :(得分:0)

polyfitn应该有所帮助...

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

答案 1 :(得分:0)

您似乎需要fit中的Curve Fitting Toolbox功能。或者也许polyfitn由另一个Matlab用户创建和共享。

答案 2 :(得分:0)

正如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