首页/文章/ 详情

方波的Gibbs现象

22天前浏览1030
   
   

本文摘要:(由ai生成)

本文首先分享了作者育儿日常,随后深入探讨了方波信号的傅里叶级数展开。作者计算了占空比为50%的方波的傅里叶系数,并说明了如何通过叠加余弦信号逼近方波。文中还提及了吉布斯现象,即在不连续点附近谐波叠加产生的过冲现象。最后,给出了用Python生成方波信号及其谐波叠加图形的示例代码,为读者提供了实用的学习资料。

今日碎碎念

今天早上老三,没睁眼就开始嚎叫,然后持续了大概大半个小时才消停。前几天在文章中感慨俩小娃轮流哭的艰难,号友发消息问说,有没有办法找出原因,然后复盘。

话说,这个原因真的很难找,小娃自己可能也不知道自己是啥情绪,然后情绪过了,小娃自己都忘记她为啥发脾气了,所以纯粹靠大人去猜。

老大的时候,看了很多育儿书,也许会去使劲找找原因;等到老二老三,真的没有这功夫了,还是善待善待自己吧,大家都过得去就行。

不过,说到原因,我总结了一下两次的客观情况,发现有一个共同点,就是我早起了。唉,结合小娃娃对妈妈的那种天然的依恋,难道是因为这个?

但是,就算这个原因,我也不能就干耗着等她们醒吧。写到这,我决定晚上回去以后,和她们商量商量。

   
   

今日正文

(1) 占空比为50%的方波的傅里叶级数展开

假设有一个方波,周期是T,占空比τ为0.5,幅度为1,如下图所示。

周期信号的傅里叶级数为:

因此,可以求得,方波的各个频率分量所对应的傅里叶系数Ck,分别为:

也就是说,方波用傅里叶级数暂开后,可以得到:

也就是说,上述图示的方波是由直流和一系列不同幅度的余弦函数构成的。

(2) 演示一下,用各个分量,慢慢叠加,形成方波。

当只有直流时,图形为:

叠加上频率为w0的余弦信号,图形为:

叠加上频率为3w0的余弦信号,图形为:

叠加上频率为5w0的余弦信号,图形为:

......

叠加上频率为101w0的余弦信号,图形为:

......

叠加上频率为1001w0的余弦信号后,图形为:

(3) 吉布斯现象(Gibbs phenomenon)

由上面的叠加图形可以看到,当用余弦波叠加去逼近方波信号时,所用的谐波次数N即使增加到1001后,在不连续点的附近,仍然会出现过冲。

N越大,过冲的最大值越接近不连续点,但其峰值并不下降,而是大约等于原函数在不连续点处跳变值的9%。

(4) 上面的图形的Python程序

    import numpy as npimport matplotlib.pyplot as pltdef square_wave(T, tau, num_periods):    """Generate a square wave."""    t = np.linspace(-T * num_periods / 2, T * num_periods / 2, 100000)    duty_cycle = tau / T    waveform = np.zeros_like(t)    waveform[((t+0.25*T) % T) < (duty_cycle * T )] = 1    waveform1=np.ones_like(t)*0.5    return t, waveform,waveform1def harmonic_component(T, n, amplitude,num_periods):    """Generate a harmonic component."""    t = np.linspace(-T * num_periods / 2, T * num_periods / 2, 100000)    frequency = n / T    component = amplitude * np.cos(2* np.pi * frequency*t)    return t, componentdef main():    """Main function."""    T = 1  # Period    tau = 0.5 * T  # Pulse width    num_periods = 5  # Number of periods to plot    num_harmonics = 1001  # Number of harmonics to include    # Generate the fundamental square wave    t, waveform,waveform1 = square_wave(T, tau, num_periods)    # Plot the fundamental square wave    plt.figure(figsize=(10, 6))    # plt.plot(t, waveform, label='Fundamental')        # Generate and add harmonic components    for n in range(1, num_harmonics + 1):        _, component = harmonic_component(T, n, np.sinc(n/2),num_periods)        waveform1 += component            plt.plot(t, waveform1)    plt.xlabel('Time')    plt.ylabel('Amplitude')    plt.title('Square Wave Reconstruction with Harmonic Components')    plt.legend()    plt.grid(True)    plt.show()if __name__ == "__main__":    main()

     
    来源:加油射频工程师
    System系统仿真ADSpython芯片UM理论
    著作权归作者所有,欢迎分享,未经许可,不得转载
    首次发布时间:2024-05-26
    最近编辑:22天前
    加油射频工程师
    分享所学知识
    获赞 227粉丝 65文章 494课程 1
    点赞
    收藏
    未登录
    还没有评论

    课程
    培训
    服务
    行家

    VIP会员 学习 福利任务 兑换礼品
    下载APP
    联系我们
    帮助与反馈