【发布时间】:2014-01-23 22:56:12
【问题描述】:
我正在使用Apache Commons Math 包,我有以下正弦波...
0.90, 0.85, 0.80, 0.83, 0.89
0.90, 0.85, 0.80, 0.83, 0.89
0.90, 0.85, 0.80, 0.83, 0.89
0.90, 0.85, 0.80, 0.83, 0.89
从以上数据可以看出,波浪有以下属性...
- 幅度 =
.05 - 相位 =
0 - 频率 =
5
但是,当我将正弦波添加到 HarmonicFitter 时...
HarmonicFitter fitter = new HarmonicFitter(new LevenbergMarquardtOptimizer());
fitter.addObservedPoint(0, 0.90);
fitter.addObservedPoint(1, 0.85);
fitter.addObservedPoint(2, 0.80);
fitter.addObservedPoint(3, 0.83);
fitter.addObservedPoint(4, 0.89);
fitter.addObservedPoint(5, 0.90);
fitter.addObservedPoint(6, 0.85);
fitter.addObservedPoint(7, 0.80);
fitter.addObservedPoint(8, 0.83);
fitter.addObservedPoint(9, 0.89);
fitter.addObservedPoint(10, 0.90);
fitter.addObservedPoint(11, 0.85);
fitter.addObservedPoint(12, 0.80);
fitter.addObservedPoint(13, 0.83);
fitter.addObservedPoint(14, 0.89);
fitter.addObservedPoint(15, 0.90);
fitter.addObservedPoint(16, 0.85);
fitter.addObservedPoint(17, 0.80);
fitter.addObservedPoint(18, 0.83);
fitter.addObservedPoint(19, 0.89);
double[] vals = fitter.fit();
return vals;
返回的值更像...
Amplitude: 5.19813329138371
Frequency: 4.69209750375546E-5
Phase: 1.405312649084833
为什么曲线拟合会导致具有 4 个相同频率的正弦波具有如此截然不同的属性?
【问题讨论】:
-
会不会只是因为你的数据点不够精确?
-
+1;这是我这几天看到的最完整、格式正确、语法正确的问题。
-
另外,我觉得很奇怪,你观察到的点在 5 的周期上是周期性的,鉴于你说频率是 5,你的样本的周期性不应该是 PI/5 吗?跨度>
-
你所拥有的不是正弦波,它是正弦波在常数上的叠加,其中常数占主导地位。您的数学 API 是否有望弥补这一点?
-
@LordOfThePigs 那么,这肯定是最突出的问题。
标签: java math apache-commons curve-fitting