scipy.signal.
square#
- scipy.signal.square(t, duty=0.5)[源]#
返回一个周期性的方波波形。
方波的周期为
2*pi
,在 0 到2*pi*duty
之间取值为 +1,在2*pi*duty
到2*pi
之间取值为 -1。duty 必须在区间 [0,1] 内。请注意,这不是带限的。它会产生无限数量的谐波,这些谐波在频谱中来回混叠。
- 参数:
- t类数组
输入时间数组。
- duty类数组,可选
占空比。默认值为 0.5 (50% 占空比)。如果是一个数组,会使波形随时间变化,并且必须与 t 的长度相同。
- 返回:
- yndarray
包含方波波形的输出数组。
示例
以 500 Hz 采样 1 秒的 5 Hz 波形
>>> import numpy as np >>> from scipy import signal >>> import matplotlib.pyplot as plt >>> t = np.linspace(0, 1, 500, endpoint=False) >>> plt.plot(t, signal.square(2 * np.pi * 5 * t)) >>> plt.ylim(-2, 2)
一个脉宽调制正弦波
>>> plt.figure() >>> sig = np.sin(2 * np.pi * t) >>> pwm = signal.square(2 * np.pi * 30 * t, duty=(sig + 1)/2) >>> plt.subplot(2, 1, 1) >>> plt.plot(t, sig) >>> plt.subplot(2, 1, 2) >>> plt.plot(t, pwm) >>> plt.ylim(-1.5, 1.5)