为了账号安全,请及时绑定邮箱和手机立即绑定

Java 中的正弦函数拟合 - 解释 commons.apache 的输出

Java 中的正弦函数拟合 - 解释 commons.apache 的输出

白猪掌柜的 2023-02-23 17:02:24
我有兴趣在 Java 中创建一个最适合某些给定点的正弦函数。这些点在以下数组中给出:double[] array_to_fit = {0,2,4,6,8,8,5,3,3,0};我找到了适用于 Java 的HarmonicCurveFitter函数,并决定在 Android 中使用它。为了将它们与此功能一起使用,我相信我需要通过减去每个点的平均值来“预处理”数据,这给了我以下信息:double[] array_to_fit = {-3.9,-1.9,0.1,2.1,4.1,4.1,1.1,-0.9,-0.9,-3.9};并将数据拟合到HarmonicCurveFitter对象中:        //add points to WeightedObservedPoints object        for (int index = 0; index < array_to_fit.length; index++) {            obs.add(index, array_to_fit[index]-average);        }        double[] bestFit = fitter.fit(obs.toList());        amp = bestFit[0];        freq = bestFit[1];        phase = bestFit[2];Android 函数返回的输出如下:放大器:3.7572角频率(欧米茄):0.6273相位:-2.7699我使用 SciPy 在 Python中完成了相同的练习,输出如下:放大器:3.7572角频率(欧米茄):0.6273阶段:-1.1991如您所见,Phase 值不同。当我在图表中绘制两个函数时:可视化输出图结果如您所见,在 Python 中创建的正弦函数似乎确实没问题,而 Android 中的正弦函数似乎在水平轴上略有偏移......有谁知道这是为什么?我是否错误地解释了 HarmonicCurveFitter 函数的相位输出?
查看完整描述

1 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

解决了!错误是我期待的是正弦,但这个库中的函数是用余弦表示的。功能如前所述

f(t) = A * cos(omega*t + phi)


查看完整回答
反对 回复 2023-02-23
  • 1 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信