一个x对应多个y,怎样用matlab曲线拟合?
如图,x实际上是1x72的矩阵,目的是记录6年的月平均观测值,然后进行曲线拟合。拟合函数是以月份为变量,所以不能设成1到72.请教下如何实现把x延伸出去的效果?感谢!...
如图,x实际上是1x72的矩阵,目的是记录6年的月平均观测值,然后进行曲线拟合。拟合函数是以月份为变量,所以不能设成1到72.请教下如何实现把x延伸出去的效果?感谢!
展开
展开全部
追问
可能我问的不太清楚,多个Y值不是误差,而是不同年份当月的值。比如x=1对应了6个y值,这6个y实际上是2000年-2005年每年1月的值,我希望把x从1-12再1-12这样平铺6次出去,反应从2000年-2005年的时间延伸。结果如果直接输入x=[1 2 3 ...12 1 2 3 ... 12 ...]这样就只能显示一次1-12.请问这种情况怎么整?
追答
你这说的是怎样画图的问题,与拟合是两码事。
既然说拟合,那就首先要明确最基本的概念:自变量是什么,因变量是什么,函数的形式,以及有哪些系数是需要拟合的?可以如你所说那样,把多年的数据延伸出去,但拟合的时候怎么算?要把年份也作为自变量考虑进去吗?那样函数的形式又是什么?
至于说多个Y值算不算是误差,也要看你怎样理解。如果是把月份作为自变量,各月平均观测值作为因变量考虑,那么,不同年份的观测值完全可以理解为对同一变量不同次观测所表现出来的误差。
如果你想把各年份的数据铺开了画,并且坐标轴上标出适当的年度和月份,可以参考下面的代码(其中x、y和上面相同):
X=datenum(repmat(2000:2005,12,1),x',15);
Y=y';
plot(X(:),Y(:),'k.:')
set(gca,'xlim',[X(1) X(end)])
set(gca,'xticklabel',arrayfun(@(d){datestr(d,'yyyy/mm')},get(gca,'xtick')))
更多追问追答
追问
可能我问的不太清楚,多个Y值不是误差,而是不同年份当月的值。比如x=1对应了6个y值,这6个y实际上是2000年-2005年每年1月的值,我希望把x从1-12再1-12这样平铺6次出去,反应从2000年-2005年的时间延伸。结果如果直接输入x=[1 2 3 ...12 1 2 3 ... 12 ...]这样就只能显示一次1-12.请问这种情况怎么整?
追答
哦哦, 这样啊.
还是可以令 x=[1:72]; 这没有关系.
然后人工设定坐标显示字符就行了. set(gca, 'xTickLable', 人工设定的显示的数字或字符)
人工设定的显示的数字或字符 在你这里就可以写成 [1 2 3...12 1 2 3 ... 12 ...]
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询