Java:如何在 Android Studio 中生成随机信号?

标签 java android math signal-processing

如何使用 Java 生成随机信号?我想模拟一个传感器来对我正在使用的 Android 应用程序进行一些测试。该信号将被发送到服务器,应用程序将检索并处理它。

一张照片说一千句话: random signal example

单独使用 Android 随机类并不是一个好的方法。但也许使用随机类的算法?

编辑:更多信息

此信号需要是线性的并且与时间相关。想一想城市中车辆的速度如何变化,诸如此类。

最佳答案

好吧,经过深思熟虑,我想出了一个解决方案。我使用 Sigmoid 函数生成随机信号。这是我的最终结果:

最终结果 Final result

解决方案

Sigmoid 函数在 0 到 1 或 -1 到 1 之间变化,具体取决于您要如何使用它。在我看来,它们非常酷。这是它的 Wikipedia这是它的样子:

Sigmoid Function

在这种情况下,为了生成随机信号,我使用了双曲正切函数 tanh (Sigmoid):

tanh(x) = [ e^x - e^-x ] / [ e^x + e^-x ]

首先,我使用一个随机函数从 -2000 到 2000 之间选择一个数字,然后将它除以 1000,得到一个从 -2 到 2 的十进制值。如果你看一下图表,双曲线函数在 -2 之间变化很大和 2,因此它为它提供了一个很好的分布式数据。我采用随机值的双曲线函数,将其乘以比例常数(控制变化率)。然后将其值添加到最后一个已知值。最后一步是取其绝对值,以防您不想要负值。

伪代码:

y0 = 10 // initial value
k = 5 // rate of change

for ( 1 thousand points: do this ) {

    random = rand(-2000, 2000) / 1000;
    x = tanh(random);
    y = k * x + y0;
    data[] = y;

    y0 = y;
}

就是这样,简单而高效。

编辑:

如果有人感兴趣或者可能正在寻找一些随机信号,我发现了这个 Artificial Sensor Feed来自 PubNub,它也可以是一个随机信号的解决方案。

另一个例子

x0(初始值)= 100 且变化率 = 10 的最终结果的另一个示例。

enter image description here

关于Java:如何在 Android Studio 中生成随机信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50884053/

相关文章:

java - org.springframework.beans.factory.UnsatisfiedDependencyException : Error creating bean with name 'bookDaoImpl'

java - 如何在 JBullet 中定义自定义网格?

java - SimpleDateFormat 和日期比较未给出正确的输出

android - 如何将Android应用程序连接到MySQL数据库?

javascript - 如何测试一个点是否是二次贝塞尔曲线的一部分?

Java ResultSet 与 postgresql 一起工作

java - 处理 HicariCP Oracle 连接尝试

android - 如何在 android 中设置 Cognito 身份池?

c - 需要帮助弄清楚为什么我的一个测试用例没有通过

c++ - OpenGL圆形绘图得到一个椭圆