0

我正在尝试将一阶指数曲线(我也将制作二阶指数曲线)拟合到 Matlab 中的某些数据点。我一直在尝试使用 StackOverflow 的另一个问题中描述的方法,但我只收到以下消息:'Error in ==> fit at 115 errstr = handlerr('curvefit:fit:xDataMustBeColumnVector', ... '。

这是我的代码:

hold on

X = (1x8-vector containing data);
Y = (1x8-vector containing data);
Error = (1x8-vector containing data);

YError = Y.*Error;

ft = fittype('exp1');
f = fit(X, Y,ft);

errorbar(X, Y, YError, 'squarek','MarkerFaceColor','k')
plot(f,X,Y)

我知道“拟合”应该返回指数曲线的系数,所以我知道最后一个“情节”是行不通的。现在我什至无法得到系数。

4

1 回答 1

1

1x8 向量是行向量。8x1 向量将是列向量。这似乎是微不足道的区别,但它会对代码的工作产生影响,因此 fit 要求 size(X,2) 为 1 或 2(您可以通过在命令行中键入 edit fit.m 来查看这一点)。

当然,你得到的错误有点不透明。R2011b 抛出(iFit 和 fit 的行号正确):

X 必须是一列或两列的矩阵。

Just X', Y' 将解决此问题(或调整产生 X 和 Y 的代码以首先为您提供列向量)。

于 2013-08-07T09:58:58.287 回答