scipy.signal.

dbode#

scipy.signal.dbode(system, w=None, n=100)[源代码]#

计算离散时间系统的波特幅度和相位数据。

参数:
system

dlti 类的实例或描述系统的元组。元组中的元素数量决定了解释,即:

  1. (sys_dlti): LTI 类 dlti 的实例。请注意,也允许派生实例,例如 TransferFunctionZerosPolesGainStateSpace 的实例。

  2. (num, den, dt): 如 TransferFunction 中所述的有理多项式。多项式的系数应按降幂顺序指定,例如,z² + 3z + 5 将表示为 [1, 3, 5]

  3. (zeros, poles, gain, dt): 如 ZerosPolesGain 中所述的零点、极点、增益形式。

  4. (A, B, C, D, dt): 如 StateSpace 中所述的状态空间形式。

warray_like, 可选

归一化到奈奎斯特频率为 π 的频率数组,即具有单位弧度/样本。将为该数组中的每个值计算幅度和相位数据。如果未给出,将计算合理的集合。

nint, 可选

如果未给出 w,则要计算的频率点数。 n 个频率在选择包括系统极点和零点影响的区间中以对数方式间隔。

返回:
w一维 ndarray

归一化到奈奎斯特频率为 np.pi/dt 的频率数组,其中 dtsystem 参数的采样间隔。单位是弧度/秒,假设 dt 以秒为单位。

mag一维 ndarray

以 dB 为单位的幅度数组

phase一维 ndarray

以度为单位的相位数组

说明

此函数是 dfreqresp 的便捷包装器,用于从计算的频率响应的复数值幅度中提取幅度和相位。

在版本 0.18.0 中添加。

示例

以下示例展示了如何创建截止频率为 100 Hz 的 5 阶巴特沃斯低通滤波器的波特图

>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> from scipy import signal
...
>>> T = 1e-4  # sampling interval in s
>>> f_c, o = 1e2, 5  # corner frequency in Hz (i.e., -3 dB value) and filter order
>>> bb, aa = signal.butter(o, f_c, 'lowpass', fs=1/T)
...
>>> w, mag, phase = signal.dbode((bb, aa, T))
>>> w /= 2*np.pi  # convert unit of frequency into Hertz
...
>>> fg, (ax0, ax1) = plt.subplots(2, 1, sharex='all', figsize=(5, 4),
...                               tight_layout=True)
>>> ax0.set_title("Bode Plot of Butterworth Lowpass Filter " +
...               rf"($f_c={f_c:g}\,$Hz, order={o})")
>>> ax0.set_ylabel(r"Magnitude in dB")
>>> ax1.set(ylabel=r"Phase in Degrees",
...         xlabel="Frequency $f$ in Hertz", xlim=(w[1], w[-1]))
>>> ax0.semilogx(w, mag, 'C0-', label=r"$20\,\log_{10}|G(f)|$")  # Magnitude plot
>>> ax1.semilogx(w, phase, 'C1-', label=r"$\angle G(f)$")  # Phase plot
...
>>> for ax_ in (ax0, ax1):
...     ax_.axvline(f_c, color='m', alpha=0.25, label=rf"${f_c=:g}\,$Hz")
...     ax_.grid(which='both', axis='x')  # plot major & minor vertical grid lines
...     ax_.grid(which='major', axis='y')
...     ax_.legend()
>>> plt.show()
../../_images/scipy-signal-dbode-1.png