cupyx.scipy.signal.square#

cupyx.scipy.signal.square(t, duty=0.5)[source]#

返回周期性方波波形。

方波的周期为 2*pi,从 0 到 2*pi*duty 时值为 +1,从 2*pi*duty2*pi 时值为 -1。duty 必须在区间 [0,1] 内。

注意,这不是带限的。它产生无限数量的谐波,这些谐波在频谱上来回混叠。

参数:
  • t (array_like) – 输入时间数组。

  • duty (array_like, optional) – 占空比。默认值为 0.5 (50% 占空比)。如果是一个数组,会导致波形随时间变化,且必须与 t 的长度相同。

返回值:

y – 包含方波波形的输出数组。

返回类型:

ndarray

示例

以 500 Hz 采样率对 5 Hz 波形进行 1 秒采样

>>> import cupyx.scipy.signal
>>> import cupy as cp
>>> import matplotlib.pyplot as plt
>>> t = cupy.linspace(0, 1, 500, endpoint=False)
>>> plt.plot(cupy.asnumpy(t), cupy.asnumpy(cupyx.scipy.signal.square(2 * cupy.pi * 5 * t)))
>>> plt.ylim(-2, 2)

脉冲宽度调制的正弦波

>>> plt.figure()
>>> sig = cupy.sin(2 * cupy.pi * t)
>>> pwm = cupyx.scipy.signal.square(2 * cupy.pi * 30 * t, duty=(sig + 1)/2)
>>> plt.subplot(2, 1, 1)
>>> plt.plot(cupy.asnumpy(t), cupy.asnumpy(sig))
>>> plt.subplot(2, 1, 2)
>>> plt.plot(cupy.asnumpy(t), cupy.asnumpy(pwm))
>>> plt.ylim(-1.5, 1.5)