1

我想fit在 MATLAB 中使用二维。我单独定义了函数,然后用fittype

x 有两列!

f=fittype('@(x)myfun(beta1, beta2,beta3, x)')

然后在选项中自定义我的起点和算法。

然后使用[results, goodness]=fit(x, zdata,f, options),但我有一个错误

???FITTYPE 函数的输入过多。

==> 中的错误适合 443 errstr = handlerr( errid, errmsg, suppresserr );

我也试过了[results, goodness]=fit([x(:,1), x(:,2)], zdata,f, options)

并且仍然有同样的问题。

我用了fit -all

XDATA 必须是具有一到两列的矩阵。

==> 错误,适合 115 errstr = handlerrr('curvefit:fit:xDataMustBeColumnVector', ...

对我来说听起来毫无意义,因为我的 x 分为两列!!!!

接着which fit -all

/Applications/matlab/MATLAB_R2010a.app/toolbox/curvefit/curvefit/fit.m /Applications/matlab/MATLAB_R2010a.app/toolbox/stats/@ProbDistUnivParam/fit.m % ProbDistUnivParam 方法 /Applications/matlab/MATLAB_R2010a.app/toolbox /stats/@NaiveBayes/fit.m % NaiveBayes 方法 /Applications/matlab/MATLAB_R2010a.app/toolbox/stats/@gmdistribution/fit.m % gmdistribution 方法

你能帮我使用fitfittype拟合我的二维数据吗?{请不要向我介绍 meshgrid 和其他命令。}

4

1 回答 1

1

您需要添加'numindep' = 2表明您适合曲面的参数(即有两个自变量)。

这是一个使用您的函数和使用字符串的 Franke 数据的示例:

load franke
ft = fittype('myfun(beta1, beta2, beta3, [x, y])', 'numindep', 2)
[results, goodness] = fit([x, y], z, ft)

这是一个使用匿名函数将您的函数与 Franke 数据一起使用的示例:

load franke
ft = fittype(@(beta1,beta2,beta3, x, y)myfun(beta1, beta2,beta3, [x, y]), 'numindep', 2)
[results, goodness] = fit([x, y], z, ft)
于 2013-08-14T17:02:08.513 回答