【发布时间】:2013-10-20 00:50:19
【问题描述】:
我正在使用 Matlab 用 poly1 曲线拟合 2 个坐标 (x,y) 中的一些数据。
问题是我找不到让拟合线更长的方法。
我需要它从 (180, 930) 到 (191, 944),但 Matlab 只是在数据附近绘制拟合线,这两个坐标之间。
fit 命令是否有一些参数(或 cftool 中的一些首选项)可以帮助我?
此外,我已经尝试过 cftool 中的“调整轴限制”选项,但它根本没有帮助。
我已经搜索了已经提出的问题,但没有找到与此相关的任何内容。 我是这个程序的新手,所以如果这是一个愚蠢的问题,我很抱歉 提前致谢, 乔瓦尼
编辑: 第一张图片的代码是:
[FitUp,goodnessUP] = fit(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,2),'poly1')
[FitDown,goodnessDOWN] = fit(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,3),'poly1')
plot(FitUp,'b')
hold on
plot(FitDown,'b')
hold on
errorbar(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,2),AKaterMatrix1msDX(:,4),'--r')
hold on
errorbar(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,3),AKaterMatrix1msDX(:,4),'--r')
第二个的代码是:
[FitUp,goodnessUP] = fit(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,2),'poly1')
[FitDown,goodnessDOWN] = fit(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,3),'poly1')
plot(FitDown,'b')
hold on
plot(FitUp,'b')
hold on
errorbar(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,2),AKaterMatrix1msDX(:,4),'--r')
hold on
errorbar(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,3),AKaterMatrix1msDX(:,4),'--r')
在这里您可以找到两个拟合,似乎第一个拟合没有被裁剪,而hold on 之后的第二个是:
https://docs.google.com/file/d/0B749BCu7mnZHaEhITUZ1YzdfVDA/edit?usp=sharing
https://docs.google.com/file/d/0B749BCu7mnZHeDVTOGRuSkktUmc/edit?usp=sharing
【问题讨论】:
-
请在您的问题中添加代码。
-
我添加了代码和适合的图像来澄清我的问题。
-
我不能评论 'fit' 的使用,但如果你只是拟合一个简单的多项式,
polyfit和polyeval可能会更好。一旦你有了拟合的多项式,你就可以在你想要的任何网格上对其进行评估。此外,hold函数是一个切换。只有第一个是必需的(并且可能应该在最后一个错误栏命令之后跟一个hold off)。 -
这是个好主意,谢谢。再问一个问题。关于拟合优度的信息(SSE、R 平方...)与 cftool 或 fit 命令给我的信息相同吗?如果没有,我怎样才能获得它们?
-
感谢@craigim,如果您或其他人发布了答案,我可以将问题标记为已回答。如果你只评论,我怎么给你积分?
标签: matlab data-fitting