我正试图在Matlab中的某些数据点拟合一阶指数曲线(我也要做二阶之一)。我一直在尝试使用StackOverflow中另一个问题中描述的方法,但我只收到此消息:'错误在==>适合115 errstr = handleerr('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)
我知道'fit'应该返回指数曲线的系数,所以我知道最后的'情节'不会起作用。现在我甚至不能把系数拿出来。
答案 0 :(得分:1)
1x8向量是行向量。 8x1向量将是列向量。这似乎是一个微不足道的区别,但它会对代码的工作产生影响,因此拟合需要大小(X,2)为1或2(您可以通过在命令行键入edit fit.m来看到这一点) )。
当然,你得到的错误有点不透明。 R2011b抛出(iFit和fit的正确行号):
X必须是带有一列或两列的矩阵。
只是X',Y'将解决这个问题(或调整生成X和Y的代码,首先为你提供列向量)。