Gibbs现象

吉布斯现象是由亨利·威尔伯拉罕在1848年发现的,然后由j·威拉德·吉布斯在1899年重新发现的。
对于具有不连续的周期信号,如果通过加傅立叶级数来重构信号,则在边缘附近会出现超调。这些超调以远离边缘的阻尼振荡方式向外衰减。这被称为GIBBS现象,如下图所示。
在这里插入图片描述
因为,当 0 < x < π 0<x<\pi 0<x<π f ( x ) = 1 f(x)=1 f(x)=1,当 π < x < 2 π \pi<x<2\pi π<x<2π f ( x ) = − 1 f(x)=−1 f(x)=1(在 ( 0 , 2 π ) (0,2\pi) (0,2π)范围外重复)定义的方波具有傅立叶级数展开:
f ( x ) = 4 π ∑ n = 1 , 3 , 5 , ⋯ 1 n sin ⁡ ( n x ) \begin{equation} f(x)=\dfrac{4}{\pi}\sum_{n=1,3,5,\cdots}{\dfrac{1}{n}\sin(n x)} \end{equation} f(x)=π4n=1,3,5,n1sin(nx)
更一般的,随着N增加,部分起伏就向不连续点压缩,但是对任何有限的N值,起伏的峰值大小保持不变,以函数 f ( x ) = x f(x)=x f(x)=x为例,其周期为 2 π 2\pi 2π,某个定义区间为 [ − π , π ] [-\pi,\pi] [π,π],其图像为:
在这里插入图片描述

且它的傅里叶展开级数的系数为:
b n = ( 1 π ) ∫ − π π x sin ⁡ ( n x ) d x = ∑ n = 1 ∞ ( − 1 ) n + 1 ( 2 n ) \begin{equation} \begin{aligned} b_n&=(\frac{1}{\pi})\int_{-\pi}^{\pi}{x\sin(nx)}\mathrm{d}x\\ &=\sum_{n=1}^{\infty}(-1)^{n+1}(\frac{2}{n}) \end{aligned} \end{equation} bn=(π1)ππxsin(nx)dx=n=1(1)n+1(n2)则它的傅里叶级数近似结果如下:
在这里插入图片描述

其误差表示为:
在这里插入图片描述

从图中可以看出其误差最大值保持不变,约为跳变值的0.09倍。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,2*np.pi,5000)

square_wave = np.ones_like(x)
square_wave[int(x.size/2):]=-1

N = 30
fsq = np.zeros_like(x)
for i in range(N):
    n = 2*i + 1
    fsq += np.sin(n  *x) / n
fsq *= 4 / np.pi

fig, ax = plt.subplots()
ax.plot(x, square_wave, lw=5, alpha=0.5)
ax.plot(x, fsq, 'r')
ax.set_ylim(-1.2,1.2)
plt.title('N='+str(N))

ax.set_xticks([0,1,2,3,4,5,6,7])
ax.set_xticks([0.5,1.5,2.5,3.5,4.5,5.5,6.5], minor=True)
ax.set_yticks([-1, 0, 1])
ax.set_yticks(np.arange(-1.2,1.2,0.2), minor=True)

ax.grid(b=True, c='k', lw=1, ls='--', which='major')
ax.grid(b=True, c='0.4', lw=0.5, ls=':', which='minor')

plt.show()

运行结果:

在这里插入图片描述

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值