如何生成两个遵循相似(但不相等)正弦形式的随机数序列?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何生成两个遵循相似(但不相等)正弦形式的随机数序列?相关的知识,希望对你有一定的参考价值。

我想创建一个模拟图,其中我代表两个设备,它们随时间测量不同深度的水中温度。假设dev.1(记录10米深度的水温)和dev.2(记录30米深度的水温)。由于它是一种模拟(我的目标是在此处说明无关紧要的内容),因此我想生成一个数据框,使我可以绘制这样的图:

enter image description here

您可以在草稿中看到,我想创建两个变量(dev.1dev.2),温度(在图中为value)随时间以正弦形式振荡。如您所见,在两种设备中,温度的变化类似但不相同(这很重要)。

有人知道如何创建此数据框吗?

答案
library(dplyr)
library(tidyr)
library(ggplot2)

set.seed(1)
t=seq(0,10,0.1)

noise_level = 0.25

dev.1 = sin(t) + 20 + runif(length(t), -noise_level, noise_level)
dev.2 = sin(t) + 25 + runif(length(t), -noise_level, noise_level)

df <- data.frame(t=t, dev.1 = dev.1, dev.2 = dev.2)

df %>% 
  pivot_longer(cols = c(dev.1, dev.2)) %>% 
  ggplot(aes(x = t, y = value, color = name)) +
  geom_line()

您可以更改噪声级别以在正弦波周围获得更多或更少的噪声。

另一答案

你感觉如何?

t <- seq(0, 3*pi, .1)
red <- sin(.95*t+.3) + jitter(.1*t, amount = .03) + 5
blue <- sin(t + rnorm(length(t), .4, .03)) + .3*t + 2

plot(red, col = "red", ylim = c(0,7), type="l")
lines(blue, col = "blue")

您可以通过不同的常数调整摆动,相位等。

以上是关于如何生成两个遵循相似(但不相等)正弦形式的随机数序列?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 pylab 和 numpy 将正弦曲线拟合到我的数据中?

R:如何生成嘈杂的正弦函数

相似文档查找算法之 simHash及其 java 实现

相似文档查找算法之 simHash 简介及其 java 实现

正弦信号的相位图

正弦信号的相位图