scipy.signal.

square#

scipy.signal.square(t, duty=0.5)[源代码]#

返回一个周期性的正方形波形。

正方形波的周期为 2*pi,从 0 到 2*pi*duty 的值是 +1,从 2*pi*duty2*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)
../../_images/scipy-signal-square-1_00.png
../../_images/scipy-signal-square-1_01.png