如何使不等正弦波?

时间:2019-02-15 11:41:16

标签: r math

我有一个与基础数学有关的“新手”问题。我正在尝试使用“不等弧度”制作正弦波(至少我相信这是我正在尝试的方法)。换句话说:我需要一个函数,当x接近无穷大时,前几个周期(x)会“更快”并逐渐变慢(“周期”更宽/更长)。这是我正在尝试做的代码和草图:

x <- seq(1, 30, by=0.1)  # my x

z <- ifelse(x <= 10, 3, ifelse(x <= 20, 2, 1))  # discrete value to modify x

y <- sin(z*x)  # my y(x)

plot(y, type="l")  # plot y(x)

和草图(plot的结果):

enter image description here

忽略“双峰”和其他失真,它们是z是离散变量的事实的结果。我想使z连续,并使每个周期平滑扩展。我应该在这里使用什么数学函数?我尝试了阻尼正弦波,但这并不是我想要的。

2 个答案:

答案 0 :(得分:1)

这并不是一个完整的答案,因为我无法从头到尾给您代码,但是您在这里寻找的是a声。线性调频有几种不同类型,具体取决于您想要的相位变化率,但我猜您可能需要线性线性调频Wikipedia

R可能已经具有可以提供此功能的功能/模块。

答案 1 :(得分:1)

由@keziah链接的Wikipedia page的直接转录:这是一个函数

chirp <- function(t,phi0=0,f0=1,k=1) sin(phi0 + 2*pi*(f0*t+k*t^2/2))
  • phi0是初始阶段
  • k是频率变化或响亮的速率。
  • f0是初始频率
 par(las=1,bty="l",mfrow=c(1,2))
 curve(chirp(x),from=0,to=5,n=501)
 curve(chirp(x,k=-1,f0=5),from=0,to=5,n=501)

enter image description here