【发布时间】:2016-06-03 16:28:30
【问题描述】:
我有一些响应数据作为向量 A,其中变量是 L 和 D。
我只想找到适合我在标题中提到的形式的数据的 L 和 D 的系数。
我想拟合曲线,而不是曲面。
我觉得应该相当简单,但是阅读一些旧答案也对我的情况没有帮助。
有没有一些简单的方法可以做到这一点?
如果你想查看数据,这里是:
A = [0 0.06 0.12 0.44 0.56 0.94 1 1 0 0.04 0.58 0.74 0.86 1 1]
L = [100 100 100 100 100 100 100 100 43.7 49.7 56 61.5 65 77 93.8]
D = [11.3 10.1 8.9 8.5 8.1 7.7 6.5 5.3 5 5 5 5 5 5 5]
非常感谢。
更多信息:
我把上面的方程写成logA = xlogL + ylogD,并尝试使用
X = [ones(size(logL)) logL logD];
b = regress(logA,X);
但是Matlab没有返回任何系数,它只是给出了b = NaN NaN NaN
【问题讨论】:
-
你有
A=0和log(0)=-inf有点问题... -
是的,我可以使用接近零的非常小的数字代替 0,或者完全忽略该特定数据点。在 cftool 中,matlab 只是忽略了该 log(0)。
-
您可能想用
realmin替换所有零:realmin是您的机器能够生成的最小的正双精度浮点数 (2.2251e-308)。在A中,只需执行A(A==0)=realmin之类的操作,然后检查问题是否仍然存在。 -
您即将拟合定义为
A=f(x,y)的函数,它是一个曲面。如果要拟合曲线,则需要定义一些将x绑定到y的函数以获得(x,y,z)=f(t)形式。
标签: matlab regression curve-fitting