surface(2d)适用于具有匿名功能的MATLAB

时间:2013-08-14 08:08:05

标签: matlab

我想在MATLAB中使用fit来获得两个维度。 我分别定义了函数,然后用fittype

调用它

x有两列!

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

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

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

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

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

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

仍然有同样的问题。

我使用了fit -all

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

==>中的错误适合115     errstr = handleerr('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 method

是否可以帮助我使用fitfittype来填充我的二维数据? {请不要向我介绍meshgrid和其他命令。}

1 个答案:

答案 0 :(得分: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)