polyfit似乎不太适合matlab中的数据

时间:2014-01-20 01:23:15

标签: matlab

我在matlab中使用polyfit来绘制通过点的最佳拟合直线。然而,最好的拟合线并不像我期望的那样 - 线看起来不像它非常适合数据......是吗?这是我的代码,任何改进这方面的帮助都会很棒。 (注意,我设置的轴限制很重要)。

x = [0 1 10 5 1 1.5];
y = [-14 -18 -22 -26 -30 -34];
scatter(x,y)
hold on
p = polyfit(x,y,1);
f = polyval(p,x);
plot(x,f,'-r','linewidth',1.2)
ylim([-35 -10])
xlim([-30 30])

2 个答案:

答案 0 :(得分:1)

你的健康状况对我来说很合适,但这可能就是你要找的东西

x = [0 1 10 5 1 1.5];
y = [-14 -18 -22 -26 -30 -34];
scatter(x,y)
hold on
p = polyfit(y,x,1);
f = polyval(p,y);
plot(f,y,'-r','linewidth',1.2)
ylim([-35 -10])
xlim([-30 30])

答案 1 :(得分:1)

这是一个总体最小二乘解决方案

data=[x(:), y(:)];
 c=mean(data);
 data=bsxfun(@minus,data,c);

[~,~,v]=svd(data);

d=v(:,end);
k=dot(d,c);

ezplot(@(x,y) x*d(1)+ y*d(2)-k, [-30 30 -35 -10])