如何在 Matlab 中以 A = (L^x)(D^y) 的形式拟合曲线?
how to fit a curve in the form of A = (L^x)(D^y) in Matlab?
我有一些响应数据作为向量 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 没有 return 任何系数,它只是给出了 b = NaN NaN NaN
mathworks 论坛的 Jos 给了我正确答案。这是:
nlm = fitnlm([L(:) D(:)], A, 'y~(x1^b1)*(x2^b2)', [0 0])
如果您没有 fitnlm,NonLinearModel.fit 也可以。其实我用的是后者
希望这对某人有所帮助。
我有一些响应数据作为向量 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 没有 return 任何系数,它只是给出了 b = NaN NaN NaN
mathworks 论坛的 Jos 给了我正确答案。这是:
nlm = fitnlm([L(:) D(:)], A, 'y~(x1^b1)*(x2^b2)', [0 0])
如果您没有 fitnlm,NonLinearModel.fit 也可以。其实我用的是后者
希望这对某人有所帮助。