циклический кросс-корреляционный питон
Возможно ли выполнять циклическую кросс-/ автокорреляцию на 1D-массивах с помощью функции numpy / scipy / matplotlib? Я просмотрел numpy.correlate () и matplotlib.pyplot.xcorr (на основе функции numpy), и оба, похоже, не могут выполнять круговую взаимную корреляцию.
Чтобы проиллюстрировать разницу, я буду использовать пример массива из [1, 2, 3, 4]. При круговой корреляции делается периодическое предположение, а отставание 1 выглядит как [2, 3, 4, 1]. Найденные функции python, похоже, используют нулевое дополнение, т. Е. [2, 3, 4, 0]. Есть ли способ заставить эти функции выполнять круговую корреляцию? Если нет, существует ли стандартное обходное решение для круговых корреляций?
- Как улучшить изображение, а затем преобразовать его в двоичное изображение с помощью Python и OpenCV?
- Сделать оператор умножения матрицы @ работать для скаляров в numpy
- DSP: обработка звука: squart или log для использования fft?
- Обнаружение пиков и их изоляция в шумных спектрах
- Кросс-корреляция непериодической функции с NumPy
Вы можете реализовать периодическую (ака круглая) кросс-корреляцию с помощью FFT :
from numpy.fft import fft, ifft def periodic_corr(x, y): """Periodic correlation, implemented using the FFT. x and y must be real sequences with the same length. """ return ifft(fft(x) * fft(y).conj()).real
Вы также можете реализовать его с помощью np.correlate
, если вы не против накладных расходов, вызванных np.hstack((y[1:], y))
:
import numpy as np def periodic_corr_np(x, y): """Periodic correlation, implemented using np.correlate. x and y must be real sequences with the same length. """ return np.correlate(x, np.hstack((y[1:], y)), mode='valid')
from numpy import roll, correlate x = [1,2,3,4] roll(x, 1) #[4,1,2,3] roll(x, 2) #[3,4,1,2] roll(x, 3) #[2,3,4,1]
Чтобы соотнести x с x, круговым сдвинутым на k, вы могли бы сделать
k = 2 correlate(x, roll(x,k))
- Jinja2: Как создать многомерный массив javascript?
- Python PIL: IOError: невозможно определить файл образа
- Почему я получаю строки нулей в 2D 2D?
- Как получить частоту прямоугольной волны в сценарии python
- Повторное создание временных рядов данных с использованием результатов FFT без использования ifft
- Неожиданное преобразование Фурье приводит к Python Numpy
- как оценить (мощность сигнала на заданной частоте) по сравнению с временем в питоне
- Функция Matlab freqz в Python
- Профилирование Python – потоковое аудио и спектр
- Пакет Python для обработки сигналов
- Расчет спектра турбулентности