查看: 2108|回复: 3|关注: 0

[已解决] 请问matlab有对多个因变量进行拟合的函数吗

[复制链接]

新手

12 麦片

财富积分


050


3

主题

5

帖子

0

最佳答案
问题的描述为:
对函数y(x; c)进行拟合, 其中x为已知的自变量(一个向量),y是已知函数表达式的因变量(一组向量),c是需要拟合出来的参数(一个向量)。


下面用一个简单的例子说明我想解决的问题:
已知我们需要拟合的两个函数关系式为:
y1 = c1 * x + c2 * x
y2 = c1 * x - c2 * x
已知一组x的值,对应的也已知一组y1, 一组y2的值。现在就是要对c1, c2进行拟合,从而让两个曲线都能fit上。


当然我需要的是非线性拟合,上面只是一个线性的例子。现在的问题是,我用nlinfit函数,每次似乎只能拟合一个函数。这样的话,比如我先nlinfit(x, y1),那么显然c1和c2是不独立的(因为y1 = (c1+c2)*x ),matlab在拟合的时候将不管c2,直接找到合适的c1。而这样y1当然可以fit的很好,但是y2就会差很远了。

所以我其实就是想找一个函数或者算法,来拟合y(x; c) 而不是单纯的 y(x; c)。

看起来这应当是拟合问题中很典型的一类,无奈我在matlab上找不到合适的方法。因此想请教论坛的朋友们。

论坛优秀回答者

中级

799 麦片

财富积分


5001500


2

主题

647

帖子

141

最佳答案
  • 关注者: 47
发表于 2018-7-1 00:51:14 | 显示全部楼层 |此回复为最佳答案
构造个 Y(x,c) = (c1 * x + c2 * x - y1).^2 + (c1 * x - c2 * x - y2).^2 然后用fmincon之类的函数求 Y的最小值

论坛优秀回答者

专家

2641 麦片

财富积分


20003000


4

主题

4993

帖子

587

最佳答案
  • 关注者: 627
发表于 2018-7-1 00:54:11 | 显示全部楼层
想到了两个办法
1.写成x=x(Y;c)的拟合问题,把y看成输入,x看成输出就行,当然前提是反函数比较好求
2.回归拟合的本质,拟合是最优化问题,目标函数min err=fun(c)
然后在目标函数里面导入x和y的数据,计算每个点的拟合误差,然后求平方和

论坛优秀回答者

中级

839 麦片

财富积分


5001500


0

主题

2139

帖子

182

最佳答案
  • 关注者: 115
发表于 2018-7-1 10:16:57 | 显示全部楼层
1stOpt里的ShardModel功能,可以轻松实现1#的要求;类似的,Origin里的Global Fit
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表