我正在尝试用 matlab 中的最佳拟合线绘制散点图,我可以使用 scatter(x1,x2) 或 scatterplot(x1,x2) 获得散点图,但基本拟合选项被遮蔽了并且 lsline 返回错误“未找到允许的线型”。什么都没做'
任何帮助都会很棒,
谢谢,乔恩。
lsline
仅在统计工具箱中可用,您有统计工具箱吗?更通用的解决方案可能是使用 polyfit
.
您需要使用 polyfit
为您的数据拟合一条线。假设您在 y
中有一些数据并且您在 x
中有相应的域值,(即你有数据近似 y = f(x)
任意 f
)然后你可以拟合线性曲线如下:
p = polyfit(x,y,1); % p returns 2 coefficients fitting r = a_1 * x + a_2
r = p(1) .* x + p(2); % compute a new vector r that has matching datapoints in x
% now plot both the points in y and the curve fit in r
plot(x, y, 'x');
hold on;
plot(x, r, '-');
hold off;
请注意,如果您想将任意多项式拟合到您的数据中,您可以通过将 polyfit 的最后一个参数更改为曲线拟合的维数来实现。假设我们称这个维度为 d
, 你会收到回 d+1
p
中的系数, 表示符合 f(x)
估计的多项式:
f(x) = p(1) * x^d + p(2) * x^(d-1) + ... + p(d)*x + p(d+1)
编辑,如评论中所述,您也可以使用 polyval
计算 r
,它的语法是这样的:
r = polyval(p, x);
我是一名优秀的程序员,十分优秀!