Понимание результатов из функции когерентности Сципи - PullRequest
1 голос
/ 08 апреля 2020

У меня есть два сигнала, которые выглядят следующим образом:

enter image description here

Длина каждого сигнала составляет 500 лет, с одной точкой данных в год. Глядя на сигналы, ожидаемая когерентность должна быть на уровне 0.01, потому что, как видно из временной области, оба сигнала имеют доминирующую частоту 100 лет. Однако, используя функцию когерентности Сципи следующим образом:

from scipy import signal

f, Cxy = signal.coherence(y1, y2, fs=1.0, nperseg=500)
plt.semilogy(f, Cxy)
plt.xlabel('frequency [1/year]')
plt.ylabel('Coherence')
plt.show()

Результат таков:

enter image description here

Я не понимаю Несколько вещей о графике:

  1. Как Сципи создал частотные бины?
  2. Почему нет пика на частоте 0,01, как ожидается?
  3. Что такое смысл разных пиков?

1 Ответ

0 голосов
/ 10 апреля 2020

Я думаю, что есть несоответствие между вашими ожиданиями по поводу когерентности и функции когерентности Сципи.

Когерентность измеряет, сколько энергии может передаваться от входа к выходу в линейных системах. Когда я смотрю ваш график, 0,01 кажется периодом, но период сигнала не означает, что это когерентность 0,01, потому что когерентность - это отношение, состоящее из спектральных плотностей мощности. Поэтому, прежде чем использовать когерентность, попробуйте проверить последовательности автокорреляции и кросскорреляции, так как они непосредственно связаны с ними.

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

Функция когерентности Сципи оценивает когерентность по PSD двух сигналов, а не по Фурье-преобразованию самих сигналов с помощью метода периодограммы Уэлча. Поэтому всегда проверяйте функцию управления окнами и частоту дискретизации, если вы уверены в своих расчетах.

Надеюсь, это поможет

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