1

我正在尝试将函数 F 拟合到实验数据。x_tem 和 yd 都是大小为 (12,1) 的向量。该函数应找到该函数对实验数据的最佳拟合值 y_tau。我只是找不到错误 - matlab 向我显示错误:

Error in lsqcurvefit (line 199)
initVals.F = feval(funfcn_x_xdata{3},xCurrent,XDATA,varargin{:});

原因:初始用户提供的目标函数评估失败。LSQCURVEFIT 无法继续。

代码是:

x_tem=Temp_aero_korrektur(:,1);
yd=Temp_aero_korrektur(:,2);

F = @(y_tau,x_tem)((-1)*((273.15-x_tem)*(273.15-y_tau(1))*8.314*    (((17.62*x_tem)/(243.12+x_tem))-((17.62*y_tau(1))/(243.12+y_tau(1)))))/(40714.53)); 

yd_tau = lsqcurvefit(F,-40,x_tem,yd);
4

1 回答 1

1

这里有两种可能。一个是您确实想在目标函数中使用矩阵运算(例如,使用mrdividex_tem/x_tem给出单个标量值)。如果是这种情况,那么您应该使用 x_tem 的转置调用 lsqcurvefit

yd_tau = lsqcurvefit(F,-40,x_tem',yd);

另一种选择是,您实际上是要根据 x_tem 的每个值计算目标函数(例如,使用 x_tem./x_tem 给出与 x_tem 长度相同的向量)。如果是这种情况,那么您的目标函数应该是

F = @(y_tau,x_tem)((-1)*((273.15-x_tem).*(273.15-y_tau(1)).*8.314.*    (((17.62*x_tem)./(243.12+x_tem))-((17.62*y_tau(1))/(243.12+y_tau(1)))))/(40714.53))

(有关时间rdivide的元素操作,请参阅文档)

于 2013-10-23T13:13:51.253 回答