最小二乘拟合,未知中介



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

只需计算一下:

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

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

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

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

开始生成一些数据

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中。

最新更新