unit_impulse#
-
scipy.signal.unit_impulse(shape, idx=None, dtype=
'float'> )[источник]# Единичный импульсный сигнал (дискретная дельта-функция) или единичный базисный вектор.
- Параметры:
- shapeint или кортеж int
Количество выборок на выходе (1-D), или кортеж, представляющий форму выхода (N-D).
- idxNone или int или кортеж int или 'mid', опционально
Индекс, по которому значение равно 1. Если None, по умолчанию используется 0-й элемент. Если
idx='mid', импульс будет центрирован вshape // 2во всех измерениях. Если задано целое число, импульс будет находиться в idx во всех измерениях.- dtypeтип данных, опционально
Желаемый тип данных для массива, например,
numpy.int8. По умолчаниюnumpy.float64.
- Возвращает:
- yndarray
Выходной массив, содержащий импульсный сигнал.
Примечания
В литературе по цифровой обработке сигналов единичный импульсный сигнал часто представляется дельтой Кронекера. [1] То есть сигнал \(u_k[n]\), который равен нулю везде, кроме единицы в \(k\)-й образец, можно выразить как
\[u_k[n] = \delta[n-k] \equiv \delta_{n,k}\ .\]Кроме того, единичный импульс часто интерпретируется как дискретно-временная версия непрерывно-временного распределения Дирака. [2]
Ссылки
[1]«Дельта Кронекера», Википедия, https://en.wikipedia.org/wiki/Kronecker_delta#Digital_signal_processing
[2]“Дельта-функция Дирака” Википедия, https://en.wikipedia.org/wiki/Dirac_delta_function#Relationship_to_the_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.])
2-мерный импульс, центрированный:
>>> 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-го порядка:
>>> 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()