【发布时间】:2013-12-04 10:45:22
【问题描述】:
我无法在 Matlab 中获得最佳拟合的二次线。我们不会大声使用内置的最佳拟合函数行,而是必须计算它。这就是我所拥有的:
dat = load('co2.dat');
x = dat(:,1);
y= dat(:,2);
X=[ones(size(x)),x.^2];
z = X'*y;
S = X'*X;
U = chol(S);
w = U'\z;
c = U\w
axis tight;
plot(x,y,'o')
q = 1959:2:2012;
fit = c(1)+c(2)*q;
hold on
plot(q,fit,'r');
这只是在 -1000 处绘制一条水平线。如果我去掉第 4 行中的 .^2 ,它会完美地进行线性拟合。也许我的问题更多地在于我缺乏最小二乘知识而不是 Matlab,但是,无论哪种方式,我都很难过(建议是否应该将其移至数学论坛)。有什么建议吗?
【问题讨论】:
标签: matlab least-squares