今天遇到一个问题,是求解matlab多元函数拟合的,
但是函数关系不确定,就是需要自己定义函数关系,然后自己调试函数中需要的参数的值。
刚开始思路是自定义一个函数关系式,然后用pso求解最优参数,其最后输出的y的值为下图所示,输入有三个自变量,x1,x2,x3.
最后的需求是找到x1,x2,x3.与y的具体关系式子,比如
y=ax1+bx2+cx3;
y=ax1+bx2+cx3+ex1x1+fx2x2++ex3x3;等等
找到思路后,尝试了很多能想到的函数关系,当然,部分结果我感觉是还可以:从刚开始的下图效果,这个拟合结果整体趋势是有了,但是结果很不理想,然后增加了更复杂的参数模型
进补到下列效果,大概是63个值与标准y的误差在1%-2%之间,此时自定义的拟合函数变为
看到效果还不错,然是还是有很大误差。开头和结尾差距还是很大
到后来,放弃自己试了, 用ANN去算了,然后手动带内核参数生成函数,大概有37个参数,函数式一长串,但是拟合效果还是可以的,如下图所示:
但是这个效果,只有220个点误差在范围内,一共280个数据,还有60个数据误差偏大
仔细看了看发现,应该就是开头和结尾误差大
最后,最后,经过多次尝试,
278个点正确,满足1%-2%的误差,也达到最终拟合需求。
记录一下,需要数据拟合的可以私聊