在Matlab中指数拟合数据点

时间:2013-08-07 09:33:53

标签: matlab

我正试图在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'应该返回指数曲线的系数,所以我知道最后的'情节'不会起作用。现在我甚至不能把系数拿出来。

1 个答案:

答案 0 :(得分:1)

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

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

  

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

只是X',Y'将解决这个问题(或调整生成X和Y的代码,首先为你提供列向量)。