我有两个看起来像这样的信号:
每个信号的长度为500年,每年有一个数据点。观察信号,预期的相干性应为0.01
,因为在时域中可以看到-两种信号的主频均为100年。但是,如下使用scipy相干函数:
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()
结果是这样:
我不了解图表的一些内容:
我认为您对连贯性的期望与scipy的连贯性功能不匹配。
相干性度量的是线性系统中可以从输入到输出传输多少功率。当我查看您的曲线图时,0.01似乎是周期,但信号的周期并不意味着它的相干性是0.01,因为相干性是由功率谱密度组成的比率。因此,在使用相干之前,请尝试检查自相关和互相关序列,因为它们与它们直接相关。
因此,峰值表示将功率从输入传输到输出的可能性更大(但),但我不知道信号之间的关系。
Scipy的相干函数根据两个信号的PSD估计相干,而不是通过Welch的周期图方法对信号本身进行傅立叶变换。因此,如果您确定要进行计算,请务必检查窗口功能和采样率。
希望这会有所帮助