如何生成两个遵循相似(但不相等)正弦形式的随机数序列?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何生成两个遵循相似(但不相等)正弦形式的随机数序列?相关的知识,希望对你有一定的参考价值。
我想创建一个模拟图,其中我代表两个设备,它们随时间测量不同深度的水中温度。假设dev.1
(记录10米深度的水温)和dev.2
(记录30米深度的水温)。由于它是一种模拟(我的目标是在此处说明无关紧要的内容),因此我想生成一个数据框,使我可以绘制这样的图:
您可以在草稿中看到,我想创建两个变量(dev.1
和dev.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 将正弦曲线拟合到我的数据中?