gpt4 book ai didi

algorithm - 从稀疏采样数据中确定频率

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:08:15 25 4
gpt4 key购买 nike

我正在观察一个正弦变化的源,即 f(x) = a sin (bx + d) + c,并想确定振幅 a、偏移 c 和周期/频率 b - 偏移 d 不重要.测量是稀疏的,每个源通常测量 6 到 12 次,并且观察是(有效地)随机时间,观察之间的间隔大约在周期的四分之一到十倍之间(只是为了强调,观察的间隔不是恒定的对于每个来源)。在每个源中,偏移量 c 与测量误差相比通常相当大,而幅度会变化 - 在一个极端,它们仅在测量误差的数量级,而在另一个极端,它们大约是误差的 20 倍。希望这完全概述了问题,如果没有,请询​​问,我会澄清。

天真地思考这个问题,测量的平均值将是偏移量 c 的一个很好的估计,而测量 f(x) 的最小值和最大值之间的范围的一半将是振幅的合理估计,特别是随着测量次数的增加,观察到与平均值的最大偏移的可能性会提高。然而,如果振幅很小,那么在我看来,准确确定 b 的机会很小,而对于大振幅源,即使它们只被观察到最少次数,前景也应该更好。

无论如何,我编写了一些代码来对周期范围内的数据进行最小二乘法拟合,并且它非常有效地确定了较大振幅源的 a、b 和 d 的最佳拟合值。然而,我看到它找到了许多可能的时期,虽然在大多数情况下一个是“最好的”(在它给出最小误差加权残差的情况下),但不同候选时期的残差差异不是大的。所以我现在想做的是量化派生周期是“误报”的可能性(或者,换句话说,我有多大的信心派生周期是正确的)。

有人对如何最好地进行有任何建议吗?我的一个想法是使用蒙特卡洛算法构建大量具有已知 a、b 和 c 值的源,构建与我的测量时间相对应的样本,用我的拟合代码拟合结果样本,然后看看会发生什么我恢复正确时期的时间百分比。但这似乎相当重量级,而且我不确定它是否特别有用,除了给出对误报率的一般感觉。

对于可能有帮助的框架有什么建议吗?我有一种感觉,这很可能在 Mathematica 中用一两行代码就可以完成,但是 (a) 我不知道,(b) 无法访问它。我精通 Java,精通 IDL,并且可能会弄清楚其他事情......

最佳答案

这看起来是为在频域中工作量身定做的。申请 Fourier transform并根据电源所在的位置识别频率,这对于正弦源应该很清楚。

附录 为了了解您的估计有多准确,我会尝试 resampling方法,例如交叉验证。我认为这就是您采用蒙特卡洛理念的方向;那里有很多工作要做,所以希望这是一个你不需要重新发明的轮子。

关于algorithm - 从稀疏采样数据中确定频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6775932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com