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 &lt;- 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:如何生成嘈杂的正弦函数的主要内容,如果未能解决你的问题,请参考以下文章

Python绘制正弦余弦函数用到哪些函数?

matlab中,给一个正弦信号加上一个均值为0,方差为1的高斯白噪声信号,想用awgn函数,怎么做?

Matlab/C/Java 中的正弦函数或数字系统中的任何其他程序

r语言optim函数给不同的初值为啥结果不同

Gen:如何将多个生成函数轨迹组合成一个高阶生成函数?

正弦函数指令的ln输入端是针对啥取正弦的