我正在尝试使用 Matlab 将数据集(使用向量 x 和 y )拟合到函数 x(y ),其中 y 显示为积分的上限,而拟合参数是下限。
我定义了两个函数:
p = @(x,a) sqrt((1 - x.^2 / a.^2).^(-2) - 1)
x = @(y, a, y0, x0) quad(@(x) 1 ./ p(x,a), y0, y) + x0
我的数据点存储在名为data
的数据集中。
我现在正试着打电话:
nlinfit(data.y, data.x, @(c, y) x(y, 0.0027, c(1), 0.001), 0.00001)
但是,会生成以下错误:
Error using nlinfit (line 142)
Error evaluating model function '@(c,y)x(y,0.0027,c(1),0.001)'.
Caused by:
Error using quad (line 66)
The limits of integration must be scalars.
如何说服 Matlab 对y0
进行非线性拟合?
我是 Matlab 的新手。但是,我已经用 Mathematica 解决了这个问题只有三行,所以我想我做了一个相当简单的错误......