我有興趣在 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 函數的相位輸出?
添加回答
舉報
0/150
提交
取消