Python - 余弦逐渐显示小放大器振荡 ("wobbles")

Python - Cosine gradually reveals small-amp oscillations ("wobbles")

我有一个问题是三角函数和 Python。我正在绘制时间间隔 [0,t] 的余弦,其频率根据另一个余弦函数(略微)变化。所以我希望看到的是在 window [0,t].

期间重复的频率从高到低的重复模式

相反,我看到的是,随着时间的推移,余弦图中出现了一个低频图案,并随着时间的推移重复出现,每次频率越来越低,直到最终余弦甚至无法正常振荡"wobbles",因为没有更好的术语。

我不明白这是如何在 window [0,t] 的过程中出现的,因为余弦(显然)是周期性的,并且调制它的函数也是如此。那么 "new" 行为是如何出现的呢?在调整基余弦频率的调制余弦的所有周期中,行为应该是相同的,对吗?

请注意,我在技术上使用修改后的余弦,而不是 cos(wt) 我使用的是 e^(cos(wt)) [称为 von mises eq 或类似的东西]。

最低需要代码:

cos_plot = []
for wind,pos_theta in zip(window,pos_theta_vec): #window is vec of time increments
   # for ref: DBFT(pos_theta) = (1/(2*np.pi))*np.cos(np.radians(pos_theta - base_pos))
    f = float(baserate+DBFT(pos_theta)) # DBFT() returns a val [-0.15,0.15] periodically depending on val of pos_theta
    cos_plot.append(np.exp(np.cos(f*2*np.pi*wind)))
    plt.plot(cos_plot)
    plt.show()

您所观察到的可能取决于“aliasing”,即出现 low-frequency 个数字,因为高频函数的采样步长太大。

(图片取自链接的维基百科页面)

如果问题不是混叠,请考虑 -1 和 1 之间的任何函数形状 都可以通过 cos(f(x)*x) 获得,只需选择 f(x)

对于,考虑任何函数-1 <= g(x) <= 1并设置f(x) = arccos(g(x))/x.

要查找问题,请尝试绘制您的 "frequency" 并查看其中是否存在任何真正奇怪的东西。可能是你在 DBFT.

中有错误

为了后代的利益,如果有人需要这个问题的答案:

我想要一个频率为时变函数 freq(t) 的余弦。我的错误是简单地在每个时间 t 像这样评估这个函数:Acos(2pifreq(t)t)。相反,您需要在每个时间点将 freq(t) 从 0 积分到 t:y = cos(2%piintegral(f(t)) + 2% pi*f0*t + 相位)。此过程的术语是频率扫描或线性调频(不是相同的术语,但如果您需要 google/SO 答案则类似)。

感谢那些回复帮助的人:)

  • SB