0

我已经生成了在频率高达 14e10 rad/s 的电迹线中看到的衰减图。ydata 范围约为 1-10 Np/m。我正在尝试生成适合的形式

y = A*sqrt(x) + B*x + C*x^2。

预计A 约为 10^-6,B 约为 10^-11,C 约为 10^-23。但是,lsqcurvefit 将返回的最小系数是 10^-7。此外,它只会为 A 返回一个非零系数,而为 B 和 C 返回 0。拟合实际上看起来非常好,但是物理学表明 B 和 C 不应该为 0。

这是我调用函数的方式

% measurement estimate
x_alpha = [1e-6 1e-11 1e-23];

lb = [1e-7, 1e-13, 1e-25];
ub = [1e-3, 1e-6, 1e-15];
x_alpha = lsqcurvefit(@modelfun, x_alpha, omega, alpha_t, lb,ub)

这是模型函数

function [ yhat ] = modelfun( x, xdata )

yhat = x(1)*xdata.^.5 + x(2)*xdata + x(3)*xdata.^2;
end

是否有可能让 lsqcurvefit 返回这么小的系数?是四舍五入的错误还是其他原因?有什么方法可以改变公差以使拟合更接近我的预期?

4

1 回答 1

0

找到一个似乎可以解决此问题的 stackoverflow 页面!

使用 lsqcurvefit 拟合

于 2013-09-04T17:45:51.943 回答