Java 以编程方式查找给定函数的周期性

Java 以编程方式查找给定函数的周期性,java,android,math,period,Java,Android,Math,Period,我正在为我的信号处理课程做一个Android项目。我的目标是在给定用户输入函数的情况下,找到信号特性,如周期性、偶数/奇数、因果关系等。现在,我一直在试图找出如何通过编程计算给定函数的周期性。我知道周期性背后的基本原理:f(t+t)=f(t) 我现在唯一的想法是广泛地计算函数的值,然后检查值的重复。我知道这个方法很愚蠢,因为我不知道需要计算多少这样的值来确定它是否是周期性的 我知道这可以很容易地在Matlab中完成,但同样很难将Matlab移植到Java。我有什么遗漏吗?我一直在搜索,但没有找到

我正在为我的信号处理课程做一个Android项目。我的目标是在给定用户输入函数的情况下,找到信号特性,如周期性、偶数/奇数、因果关系等。现在,我一直在试图找出如何通过编程计算给定函数的周期性。我知道周期性背后的基本原理:f(t+t)=f(t)

我现在唯一的想法是广泛地计算函数的值,然后检查值的重复。我知道这个方法很愚蠢,因为我不知道需要计算多少这样的值来确定它是否是周期性的

我知道这可以很容易地在Matlab中完成,但同样很难将Matlab移植到Java。我有什么遗漏吗?我一直在搜索,但没有找到任何有用的东西

提前感谢您的帮助

如果函数f是作为符号表达式给出的,那么在某些情况下,您所述的方程可以用符号形式求解。这项工作所需的工作量将取决于函数的描述方式、允许的函数类型、使用的库等


如果您与函数的唯一交互是对其进行评估,即,如果您将函数描述视为一个黑匣子或从某个传感器获取其值,那么您的最佳选择将是对数据进行分析,将其从时域转换为频域。特别是,您可能希望选择要分析的样本数作为2的幂,然后使用快速获得各种频率的强度。

您看过FFT吗?如果您的数据很好,那么只有一个(或几个)频率应该主导频谱,并且很容易在fft上看到,这就是您的函数的频率。您是在问如何在Java或一般算法中计算周期性?在这两种情况下,你在Matlab或Java中尝试了什么?@arynaq也许我有点懒,但没有,我没有查FFT。但我猜没有比这更简单的方法了。您是否有可能参考某种程序算法?我可能需要用Java编写代码。。非常感谢您的帮助。@AndyJones我在Java中找不到任何关于计算周期性的信息,所以我正在寻找一般的算法。我知道在Matlab中我可以使用类似seqperiod的东西,但Java中没有这样的模块。现在,我只是尝试在一个范围内不断计算函数,转储数组中的值,然后在序列中搜索模式。我的应用程序接受用户输入函数,如y(x)=
sin(x)*cos(x)
。基于此,我判断它是否是周期性的,偶数/奇数等。我觉得评估函数将是一种更好的方法,因为我未来的许多功能都依赖于它。考虑到这一点,我一直在尝试使用数学表达式计算器()。当然,这只是我项目的开始,我愿意接受任何建议。同时,我将查阅FFT。谢谢你的提示!