【发布时间】:2016-11-13 10:53:48
【问题描述】:
我有一组嘈杂的数据,想在 MATLAB 中拟合一个自定义方程。接下来,我将获取系数的值并在我的算法中使用它们。但是我被卡住了,我不知道为什么。我使用非线性方程 a+b*log10(x1-dcos(alpha-x2)) 其中 x1,x2 和响应值是已知的。第一个问题是 a、b 和 alpha 的系数必须有界。例如,这里的 alpha 度数只能在 0 到 360 之间变化。我不知道如何使用曲线拟合工具箱来实现这一点。
我还尝试了其他选项,例如 MATLAB 中的非线性回归技术(fitnlm、lsqcurvefit 等),但结果令人失望,因为我无法限制这些变量。因此,尽管拟合非常好,但系数太差了。
那么,问题 1:如何使用曲线拟合拟合多个变量? 问题 2:如果那不可能,那么除了非线性回归,我还可以使用哪些其他技术。
提前很多 thnak !祝你有美好的一天!
【问题讨论】:
-
在
cftool中配置您的问题,直到您解决问题为止,然后使用“导出代码”功能来学习如何以编程方式完成。 -
@Sayantan Roy 你试过答案了吗?或者请澄清您的问题
-
@anquegi 抱歉回复晚了。是的,我看到了您的回答,并感谢您的努力。我的问题是我得到的拟合给出了一个奇怪的 alpha 值,它只能在 0 到 360 之间。我使用了你的函数并添加了一个界限。但是,配件不能满足我的需求。我觉得一组数据可能有不同数量的解,因为 cos(theta) = cos(-theta)。因此,当 matlab 计算角度 alpha 时,它会生成一个值,但是这个 alpha 也可以是另一个满足相同方程和数据集的值。我不知道如何获得 alpha 的多个值。
-
@Sayantan Roy,也许你可以使用我稍后添加到响应中的 tirgonmetic 身份,这样我们很容易找到该值,而且我们注意 x2 也是角度
-
小心 cos(alfa),它是真的 cos(alfa) = cos(-alfa),但在这种情况下是 cos(-alfa+X2)。所以在我看来 alfa 只能是 alfa + n*360 是 n 从 0 到无穷大,所以是同一个角度,注意 X2 的范围
标签: matlab regression model-fitting