scipy.signal.
unit_impulse#
- scipy.signal.unit_impulse(shape, idx=None, dtype=<class 'float'>)[source]#
单位脉冲信号(离散 delta 函数)或单位基向量。
- 参数:
- shapeint 或 int 元组
输出中样本的数量 (1-D),或者表示输出 (N-D) 形状的元组。
- idxNone 或 int 或 int 元组或 ‘mid’,可选
值为 1 的索引。如果没有设定值,则默认为第 0 个元素。如果
idx='mid'
,则脉冲将居中于shape // 2
所有维度。如果为 int,则脉冲将在所有维度上处于 idx。- dtype数据类型,可选
数组的所需数据类型,例如
numpy.int8
。默认值为numpy.float64
。
- 返回:
- yndarray
包含脉冲信号的输出数组。
备注
1D 示例也称为 Kronecker delta。
在版本 0.19.0 中添加。
示例
第 0 个元素中的脉冲 (\(\delta[n]\))
>>> from scipy import signal >>> signal.unit_impulse(8) array([ 1., 0., 0., 0., 0., 0., 0., 0.])
脉冲偏移 2 个样本 (\(\delta[n-2]\))
>>> signal.unit_impulse(7, 2) array([ 0., 0., 1., 0., 0., 0., 0.])
二维脉冲,居中
>>> signal.unit_impulse((3, 3), 'mid') array([[ 0., 0., 0.], [ 0., 1., 0.], [ 0., 0., 0.]])
使用广播的 (2, 2) 处脉冲
>>> signal.unit_impulse((4, 4), 2) array([[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 1., 0.], [ 0., 0., 0., 0.]])
绘制 4 阶 Butterworth 低通滤波器的脉冲响应
>>> imp = signal.unit_impulse(100, 'mid') >>> b, a = signal.butter(4, 0.2) >>> response = signal.lfilter(b, a, imp)
>>> import numpy as np >>> import matplotlib.pyplot as plt >>> plt.plot(np.arange(-50, 50), imp) >>> plt.plot(np.arange(-50, 50), response) >>> plt.margins(0.1, 0.1) >>> plt.xlabel('Time [samples]') >>> plt.ylabel('Amplitude') >>> plt.grid(True) >>> plt.show()