首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在matlab中拟合多项式与数据,强制y-截距为零.

在matlab中拟合多项式与数据,强制y-截距为零.
EN

Stack Overflow用户
提问于 2016-01-22 05:53:25
回答 1查看 652关注 0票数 0

在matlab中,我试图使用polyfitZero函数来拟合数据的多项式,强制y截距为零。然而,我的代码似乎没有做到这一点,但我不知道我做错了什么。

代码语言:javascript
运行
复制
a = [2.0044 2.0056 2.0021 2.0021 2.0048 2.0026 2.0035 2.0013 2.0035 2.0026];
b = [0.1006 0.0848 0.0502 0.0502 0.0909 0.0385 0.0732 0.0732 0.0896 0.0772];
scatter(a, b, 6);
hold on
p = polyfitZero(a,b,1);
f = polyval(p,a);
plot(a,f,'Color',[0.7500    0.7500    0.7500],'linewidth',1.5)
box on; 
ylim([0 0.11]);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-22 13:04:45

实际上,你的代码做的正是它应该做的:拟合的多项式正好在(0,0)处横过y轴。只需将xlim([0 2.1]);添加到脚本的末尾:这就是它的样子,就可以检查这一点。

我可能假设问题是数据沿x轴移动2。如果您希望多项式通过(2,0),那么这个解决方案可能是合适的:

代码语言:javascript
运行
复制
a = [2.0044 2.0056 2.0021 2.0021 2.0048 2.0026 2.0035 2.0013 2.0035 2.0026];
b = [0.1006 0.0848 0.0502 0.0502 0.0909 0.0385 0.0732 0.0732 0.0896 0.0772];
scatter(a, b, 6);
hold on
a=a-2;
p = polyfitZero(a,b,1);
f = polyval(p,a);
a=a+2;
plot(c,f,'Color',[0.7500    0.7500    0.7500],'linewidth',1.5)
box on; 
ylim([0 0.11]);

这就是它的工作原理

尽管如此,你应该解释一下你期望你的结果会是什么样子。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34939897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档