我想在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
是否可以帮助我使用fit
和fittype
来填充我的二维数据?
{请不要向我介绍meshgrid和其他命令。}
答案 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)