scipy.signal.

find_peaks_cwt#

scipy.signal.find_peaks_cwt(вектор, ширины, вейвлет=None, max_distances=None, gap_thresh=None, min_length=None, min_snr=1, noise_perc=10, размер окна=None)[источник]#

Найти пики в одномерном массиве с помощью вейвлет-преобразования.

Общий подход заключается в сглаживании вектор путём свёртки с wavelet(width) для каждой ширины в ширины. Относительные максимумы, которые появляются на достаточном количестве масштабов длины и с достаточно высоким SNR, принимаются.

Параметры:
векторndarray

1-D массив, в котором нужно найти пики.

шириныfloat или последовательность

Одиночная ширина или 1-D array-like ширин для расчета матрицы CWT. В целом, этот диапазон должен охватывать ожидаемую ширину пиков интереса.

вейвлетвызываемый объект, необязательный

Должен принимать два параметра и возвращать 1-D массив для свертки с вектор. Первый параметр определяет количество точек возвращаемого массива вейвлета, второй параметр — масштаб (ширина) вейвлета. Должен быть нормализованным и симметричным. По умолчанию используется вейвлет Рикера.

max_distancesndarray, необязательно

В каждой строке гребневая линия соединяется только если относительный максимум в строке[n] находится в пределах max_distances[n] от относительного максимума в row[n+1]. Значение по умолчанию: widths/4.

gap_threshfloat, опционально

Если относительный максимум не найден в пределах max_distances, будет разрыв. Линия гребня прерывается, если есть более чем gap_thresh точки без соединения нового относительного максимума. По умолчанию используется первое значение массива widths, т.е. widths[0].

min_lengthint, необязательный

Минимальная длина, которую должна иметь линия гребня, чтобы быть приемлемой. По умолчанию cwt.shape[0] / 4, т.е. 1/4 от количества ширин.

min_snrfloat, опционально

Минимальное отношение SNR. По умолчанию 1. Сигнал - это максимальный коэффициент CWT на самой большой линии гребня. Шум - это noise_perc процентиль точек данных, содержащихся в той же линии гребня.

noise_percfloat, опционально

При вычислении уровня шума, процентиль точек данных, ниже которого рассматривается шум. Вычисляется с использованием stats.scoreatpercentile. По умолчанию 10.

размер окнаint, необязательный

Размер окна для вычисления уровня шума. По умолчанию cwt.shape[1] / 20.

Возвращает:
peaks_indicesndarray

Индексы расположений в вектор где были найдены пики. Список отсортирован.

Смотрите также

find_peaks

Найти пики внутри сигнала на основе свойств пиков.

Примечания

Этот подход был разработан для поиска резких пиков среди зашумленных данных, однако при правильном выборе параметров он должен хорошо работать для различных форм пиков.

Алгоритм следующий:
  1. Выполнить непрерывное вейвлет-преобразование для вектор, для предоставленного ширины. Это свёртка вектор с wavelet(width) для каждой ширины в ширины. См. cwt.

  2. Идентифицировать "линии хребтов" в матрице cwt. Это относительные максимумы в каждой строке, соединённые через соседние строки. См. identify_ridge_lines

  3. Отфильтровать ridge_lines с помощью filter_ridge_lines.

Добавлено в версии 0.11.0.

Ссылки

[1]

Bioinformatics (2006) 22 (17): 2059-2065. DOI:10.1093/bioinformatics/btl355

Примеры

>>> import numpy as np
>>> from scipy import signal
>>> xs = np.arange(0, np.pi, 0.05)
>>> data = np.sin(xs)
>>> peakind = signal.find_peaks_cwt(data, np.arange(1,10))
>>> peakind, xs[peakind], data[peakind]
([32], array([ 1.6]), array([ 0.9995736]))