R:在反转频率范围时,生成具有可变频率的正弦波并不像我预期的那样工作

R: Generating sine wave with a variable frequency does not work as I expect when inverting the frequency range

这个问题是一个扩展 但不同之处足以让我认为它构成了它自己的 post。

我正在生成具有可变频率的正弦波,但是我对我的结果有点困惑。第一个按我的预期工作,并以越来越高的频率给我一波。

x <- 1:5e+3
f <- x/1e+6
y <- cos(2*pi*f*x)
plot(x, y, type='l', col='darkblue')

很好。但是假设我想做相反的事情并绘制一个频率开始快但后来变慢的波。所以我通过像这样反转频率向量来做到这一点:rev(f)。但是结果不是我所期望的...

y <- cos(2*pi*rev(f)*x)
plot(x, y, type='l', col='darkblue')

这不是我所期望的。我原以为反转频率矢量会给我一个与之前完全相反的情节。当我在计算中也反转 x (rev(x)) 时,我得到了我想要的情节,但我真的不明白发生了什么。为什么它从快到慢再到快,为什么我们在中心只得到一半的振幅?

我敢肯定我的理解是错误的,而不是代码。

您的初始情节等于cos(x^2 * constant)

要在 1 和 5000 之间取反,您需要 cos((5000-x)^2 * constant)rev(f) 的使用有效地用 (5000-x) 替换了 x 项之一,但是您仍然有一个 x 项没有被反转,因此您的公式有效地显示了 cos((5000-x) * x * constant)

比较这些以了解为什么该公式在您的余弦频率中产生的模式与您预期的不同:

你从什么开始:https://www.wolframalpha.com/input/?i=x*x+from+1+to+5000

仅反转一个 x 项:https://www.wolframalpha.com/input/?i=(5000-x)*x+from+1+to+5000

正确的反转:https://www.wolframalpha.com/input/?i=(5000-x)*(5000-x)+from+1+to+5000