Java:如何在Android Studio中生成随机信号?
如何使用Java生成随机信号?我想模拟一个传感器,在我正在开发的Android应用程序上做一些测试。该信号将被发送到服务器,应用程序将检索并处理该信号 一张照片能说出千言万语: 单独使用Android随机类并不是一个好方法。但是也许有一个使用随机类的算法 编辑:更多信息Java:如何在Android Studio中生成随机信号?,java,android,math,signal-processing,Java,Android,Math,Signal Processing,如何使用Java生成随机信号?我想模拟一个传感器,在我正在开发的Android应用程序上做一些测试。该信号将被发送到服务器,应用程序将检索并处理该信号 一张照片能说出千言万语: 单独使用Android随机类并不是一个好方法。但是也许有一个使用随机类的算法 编辑:更多信息 该信号需要是线性和时间相关的。想想城市里车辆的速度是如何变化的,诸如此类 好吧,经过思考,我想出了一个解决办法。我使用了一个Sigmoid函数来生成一个随机信号。以下是我的最终结果: 最终结果 解决方案 Sigmoid函数的
该信号需要是线性和时间相关的。想想城市里车辆的速度是如何变化的,诸如此类 好吧,经过思考,我想出了一个解决办法。我使用了一个Sigmoid函数来生成一个随机信号。以下是我的最终结果: 最终结果 解决方案 Sigmoid函数的范围为0到1,或-1到1,具体取决于您希望如何使用它。在我看来,他们很酷。这是它的,这是它的样子: 在这种情况下,为了生成随机信号,我使用双曲正切函数tanh(Sigmoid): 首先,我使用一个随机函数从-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;
}
就是这样,简单而有效
编辑:
如果有人感兴趣或者可能在寻找一些随机信号,我从PubNub找到了这个,它也可能是一个随机信号的解决方案
另一个例子
x0(初始值)=100且变化率=10的最终结果的另一个示例
您的要求是什么?无论您使用什么数据来创建该图片,它似乎都应该起作用。为什么不直接使用它呢?这是来自谷歌图片:)不确定为什么需要使用sigmoid函数;你可以尝试一种“随机游走”的方法——以一个随机(但很小)的数量迭代增加值。有很多方法可以做到这一点。我首先开始使用sigmoid从起始值中获取一个随机百分比,然后对其进行加/减,这也可以。它只是按照它原来的方式工作,而且由于它只是为了测试一个应用程序,所以现在就可以了。
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;
}