如何在 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 也可以。其实我用的是后者

希望这对某人有所帮助。