matlab曲线拟合的问题,做不来,但是急着用!!求助!!!

clearx=[1986199620092011];y=[0.07580.07540.07580.0762];p=polyfit(x,y,2)xi=1985:5:2015... clear
x=[1986 1996 2009 2011 ];
y=[0.0758 0.0754 0.0758 0.0762];
p=polyfit(x,y,2)
xi=1985:5:2015;
yi=polyval(p,xi);
plot(x,y,'*',xi,yi,'r')
用这个拟合出来有警告:
Warning: Polynomial is badly conditioned. Remove repeated data points
or try centering and scaling as described in HELP POLYFIT.
应该怎样改呢 而且那个y矩阵还是每个元素都扩大了14倍的,,因为如果用实际的话就更有问题了 对于这样的应该怎样做啊 ,可不可以把程序弄出来啊 ,今晚就要。。谢谢!!!
展开
 我来答
lhmhz
高粉答主

2014-08-02 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7263 获赞数:16985

向TA提问 私信TA
展开全部

将年份改成自然数,即x=[1986 1996 2009 2011 ];改写成x=[1 10 23 25];

xi=1985:5:2015;改写成xi=1:31;


图形输出可以这样写,

xi=1985:2015;

x=[1986 1996 2009 2011];

plot(x,y,'*',xi,yi,'r'),xlabel('x'),ylabel('y(x)');legend('原始数据曲线','二阶拟合曲线')

更多追问追答
追问
请问为什么要这样改啊 改了后我想拟合的曲线的自变量还是原来那个吗

?如果不是不就不对了吗?而且我还需要拟合出来函数的系数哦
追答
因为用年份作自变量,实际上是不合理的,如果9999的话,那算出的值你敢相信吗?

所以一般都以数字序列来作自变量。
在具体出图的时候,可以用年份号来表示。
shizairenweie
2014-08-02 · TA获得超过101个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:161万
展开全部
警告可以不用管的,主要是你数据太少,而提示说可以降维(因为高维变量多),但你的数据的趋势决定了没法降维的。
拟合出来基本反映趋势即可!
PS:Y数据扩大是不影响拟合效果的(你可以去尝试,缩小和扩大都是不影响拟合效果的)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式