我有三个数据点,通过它们我必须拟合一条形式为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
中。