Понимание функций Python 3 matplotlib.plot.cohere и scipy.signal.coherence - PullRequest
1 голос
/ 04 февраля 2020

Я пытаюсь понять, почему я получаю некоторые странные результаты, используя эти коды когерентности в Python 3.7.3.

Итак, если я правильно понимаю, если два сигнала имеют одинаковую частоту и амплитуды, но поэтапные, согласованность между ними должна составлять 1 (100%). Чтобы проверить это, я написал некоторый код:

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal as sig

samp = 1000 
freq = 5
x = np.arange(samp)
y = np.sin(2*np.pi*freq*x/samp) # first signal
y2 = np.cos(2*np.pi*freq*x/samp) # second signal, phased .5 pi radians

# First attempt at testing coherence:

ff, Cxy = sig.coherence(y, y2)
plt.semilogy(ff, Cxy)
plt.show()

Это дает мне график, который показывает когерентность ~ 1 на частоте 0 и на частоте 0,5, с более низкими значениями когерентности между ними.

First plot

Тогда я попробовал это:

plt.cohere(y, y2)
plt.show()

И это дает мне график с когерентностью 1 на ~ частоте 0, 0,5 и 1, с меньшей когерентностью между ними.

Second plot

Итак, как мне теперь это интерпретировать? Моя цель - использовать это как меру когерентности в определенных частотных бинах, например, 1-5 Гц, 5-12 Гц и т. Д. c ... Я предполагаю, что для этой цели я бы усреднил коэффициенты когерентности для каждая точка данных находится между этими частотными границами. Тем не менее, я не понимаю, почему я получаю выходное значение от 0-0,5 до 0-1,0 для моих значений когерентности, если частота сигнала равна 5. Означает ли это, что я должен умножать ось частоты графика на частоту моего сигнала ? Я был бы очень признателен за помощь в лучшем понимании этого вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...