我正在尝试将函数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);
答案 0 :(得分:1)
这里有两种可能性。一个是你确实想在目标函数中使用矩阵运算(例如,x_tem/x_tem
使用mrdivide给出单个标量值。如果是这种情况,那么你应该使用x_tem的转置
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))