R:如何生成嘈杂的正弦函数
Posted
技术标签:
【中文标题】R:如何生成嘈杂的正弦函数【英文标题】:R: How to generate a noisy sine function 【发布时间】:2015-11-13 17:21:47 【问题描述】:我对整个 R 事物还是很陌生。
我有以下目标;我有一个正弦函数,可以描述随时间变化的钙粒子数: 像 y = a * sin (b*t) + c
由于实际上钙的生成和去除是在随机事件中描述的,我想在我的函数中添加一个随机噪声项(最好在平均噪声幅度上进行扩展)。
类似于 z = y + random*Amplitude
你能帮帮我吗?
最好的
【问题讨论】:
【参考方案1】:这是我将使用的一种方法 - 我提供了两种关于如何生成错误的选项(均匀分布与高斯分布):
### Equation: y=a*sin(b*t)+c.unif*amp
# variables
n <- 100 # number of data points
t <- seq(0,4*pi,,100)
a <- 3
b <- 2
c.unif <- runif(n)
c.norm <- rnorm(n)
amp <- 2
# generate data and calculate "y"
set.seed(1)
y1 <- a*sin(b*t)+c.unif*amp # uniform error
y2 <- a*sin(b*t)+c.norm*amp # Gaussian/normal error
# plot results
plot(t, y1, t="l", ylim=range(y1,y2)*c(1,1.2))
lines(t, y2, col=2)
legend("top", legend=c("y1", "y2"), col=1:2, lty=1, ncol=2, bty="n")
【讨论】:
【参考方案2】:y <- jitter(a*sin(b*t) + c)
使用 jitter()
函数会给你的函数添加随机噪声。您可以在 jitter() 中指定“数量”参数来控制幅度。
【讨论】:
jitter()
不就是为了可视化目的而设计的小噪音吗(避免重复的数据点相互混淆)?
不熟悉jitter
,但在任何情况下它都不能如上所示工作给Error in a * b + c : non-numeric argument to binary operator
您不再需要 +c 部分,即只需 jitter(asin(bt)) - 如果您删除 @javadba 它将起作用。
谢谢@NickCotter以上是关于R:如何生成嘈杂的正弦函数的主要内容,如果未能解决你的问题,请参考以下文章
matlab中,给一个正弦信号加上一个均值为0,方差为1的高斯白噪声信号,想用awgn函数,怎么做?