今日正文
(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 np import matplotlib.pyplot as plt def 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,waveform1 def 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, component def 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()
全部0条评论
快来发表一下你的评论吧 !