注册 登录
编程论坛 Matlab

求助 非线性曲线拟合问题 !

keylix 发布于 2007-07-03 20:05, 3448 次点击
本人有如下数据:

TIME DV1 DV2 DV3
0 0 0 0
0 0 0 0
0.5 137 105 5
1 144 161 74
1.5 158 150 121
2 190 125 63
3 173 190 162
4 338 217 138
6 156 170 191
8 131 205 183
12 57 309 170
24 103 220 163
48 97 43 空
72 空 24 7

现有非线性方程如下: a*x*exp(-b*x)+c*x*exp(-d*x) (数据中的时间值即为x,其他3个DV分别为每次的观测值)现欲求出拟合问题中 a b c d 的值 各位高人希望帮忙 能不能详细的指教一下如何求算 如能具体给出计算程序及结果将不胜感激!! 谢谢 各位高手!!
9 回复
#2
尘埃1222007-07-03 20:49
一般已知数据和非线性模型

我们可以利用matlab自身提供的lsqcurevefit()或nlinfit()函数对模型参数进行拟合

具体用法你可以参照帮助文档 :)

呵呵,不过在你的数据中为什么同一时刻会出现三个观测值?

#3
keylix2007-07-04 14:10
回复:(keylix)求助 非线性曲线拟合问题 !
谢谢 具体的用法我去再看看

3个不同数据是 3个不同对象的实测数据 所以要进行这种群体拟合 好像不太容易

再次感谢!
#4
尘埃1222007-07-04 15:41

呵呵,或许你可以尝试对不同对象分别进行参数拟合

试试看

#5
abingchem2007-07-04 16:50

拟合结果好像不是很好

#6
尘埃1222007-07-04 17:16

呵呵,或许有效数据点比较少

不然就只能想其他方法了 :)

#7
keylix2007-07-04 17:33
回复:(keylix)求助 非线性曲线拟合问题 !
是啊 我也试着拟合了一下 发现数据相差比较大 可能是出于数据点太少的缘故

所以想改进一下 a b c d 的值 希望能得到比较好些的结果

发现研究了半天 这个lsqcurvefit 不太会用 总是提示错误 快郁闷死了!


高手们 多指教啦!
#8
尘埃1222007-07-05 12:19
呵呵,你参考帮助文档,或是利用其他软件提供的参数拟合方法也可以的 :)
#9
大洋洲2007-09-01 09:34

结果肯定不会稳定 这和软件本身采取的优化方法有一定的关系,如果样本较大则结果趋于稳定 上面的有效样本数量才11个 就是进行一般的线性拟合也有点不足 用其他软件虽然有可能得到一个稳定点的答案 但预测能力并不一定好 拟合优度也不会太高
如果在无法通过增加样本容量的情况下进行简单的拟合 可考虑先对拟合方程线性化 然后通过简单的迭代优化方法就能拟合出较高的水平的曲线 QQ:641817286 希望在网上建立一个空间 大家一起探讨 这类问题 我也是初学者 向通过交流来提高自己

1