代码之家  ›  专栏  ›  技术社区  ›  SmilingBeggar

Python-余弦逐渐显示出小的安培振荡(“摆动”)

  •  0
  • SmilingBeggar  · 技术社区  · 11 年前

    我有一个问题,那就是trig和Python的等份。我绘制的是时间间隔[0,t]上的余弦,其频率根据另一个余弦函数(略有变化)。所以我希望看到的是在窗口[0,t]的持续时间内从高到低频率的重复模式。

    相反,我所看到的是,随着时间的推移,一个低频的主题出现在余弦图中,并随着时间的流逝而重复,每次频率都越来越低,直到最终余弦甚至没有正确振荡,它只是“摇摆”,因为没有更好的术语。

    Wobbling cosine

    我不明白这是如何在窗口[0,t]的过程中出现的,因为余弦(显然)是周期性的,调制它的函数也是周期性的。那么,“新”行为如何出现??在调整基本余弦频率的调制余弦的所有周期中,行为应该是相同的,对吧?

    需要注意的是,从技术上讲,我使用的是修正余弦,而不是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()
    
    2 回复  |  直到 11 年前
        1
  •  1
  •   6502    11 年前

    你所观察到的可能取决于“ aliasing “,即由于对阶跃过大的高频函数进行采样而出现低频数字。

    enter image description here

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

    如果问题不是别名,请考虑 任何函数形状 在-1和1之间可以通过 cos(f(x)*x) 通过简单的选择 f(x) .

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

    为了寻找问题,尝试绘制你的“频率”,看看其中是否存在任何真正奇怪的东西 DBFT .

        2
  •  0
  •   SmilingBeggar    11 年前

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

    我想要一个频率是时变函数freq(t)的余弦。我的错误是每次都简单地评估这个函数 cos(2pi 频率(t) t) 。相反,您需要在每个时间点将freq(t)从0积分到t:y=cos(2 %圆周率 积分(f(t))+2 %pi*f0*t+相)。这个过程的术语是频率扫描或啁啾(不是相同的术语,但如果您需要搜索/SO答案,则类似)。

    感谢那些给予帮助的人:)

    • 某人