最小二乘拟合,未知截距

时间:2014-09-02 17:59:45

标签: matlab least-squares

我有三个数据点,通过它我必须拟合Y = m * X + C形式的直线。我希望线具有预先确定的斜率'm',但是常数'C'可以在使用matlab进行拟合时改变以获得最小的误差。有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

做数学:

C =平均值(Y)-m *平均值(X)

假设Y是包含y坐标的向量,X是x坐标。

参考:http://hotmath.com/hotmath_help/topics/line-of-best-fit.html

答案 1 :(得分:0)

如果您选择使用曲线拟合工具箱,解决方案如下。

开始生成一些数据

m = 3;
x = (1:10).';
y = m*x + 2 + randn(size(x));

然后选择要拟合的模型并设置其系数的界限

ft = fittype('poly1');
opts = fitoptions('Method', 'LinearLeastSquares');
opts.Lower = [m -Inf];
opts.Upper = [m  Inf];

最后调用拟合例程

[fitresult, gof] = fit(x, y, ft, opts);

拦截存储在fitresult.p2