r - 实现正弦波或余弦波(有概率)
问题描述
我正在寻找根据某种概率在 R 中实现特殊波(正弦/余弦)的简单方法。例如如何对下面的函数建模:
A= runif(500,1,3)
phi=rnorm(500, 0, 1)
C= runif(500,0,1)
Nt= rnorm(500,0,0.05)
t= seq(1,50,length=500)
xt1= A*cos(t+phi)+C+Nt
xt2= A*sin(t+phi)+C+Nt
我会创建一个时间序列 xt,它需要一个瞬间 $t$,要么是概率为 0.5 的余弦,要么是概率为 0.5 的正弦
解决方案
我认为这可以通过 if/else 的矢量化版本得到充分处理:
ifelse(runif(length(t)) < 0.5, xt1, xt2)
警告:这在大多数情况下都很有效。但是,ifelse
可能有副作用。这正常工作,保持POSIXt
类:
Sys.time() + ifelse(runif(3) < 0.5, 0, 100)
# [1] "2018-10-29 12:54:08 PDT" "2018-10-29 12:54:08 PDT" "2018-10-29 12:54:08 PDT"
但是,如果您正在处理已经类向量,则该类可能会丢失:
ifelse(runif(3) < 0.5, Sys.time(), Sys.time() + 100)
# [1] 1540842742 1540842842 1540842842
有一些解决方法,但有时它们被更好地归类为“黑客”。如果你没有意识到你需要寻找它们,你就不能使用它们。(如果向量只是numeric
、integer
、logical
或character
,这通常不是一个因素,我相信其他一些同样“好”。)
推荐阅读
- google-app-maker - 需要一些帮助来分配答案到谷歌应用程序制造商表单
- python - 使用 Python 连接到远程 Oracle 数据库
- python - 在 JupyterLab 上运行 dash 返回错误
- python-3.x - 如何获得 RMSE 值
- javascript - Google Apps 脚本表 if 声明发送电子邮件
- excel - 在 VBA 中复制和粘贴范围的联合
- vba - 如何在 PowerPoint 上动态创建 ActiveX 文本框
- javascript - 有什么方法可以使文本可选并将自定义操作添加到上下文菜单?
- xml - Powershell:从函数正确返回 XML
- r - 替换向量中不是 %in% 向量的值