Scipy相干函数的理解结果

问题描述 投票:1回答:1

我有两个看起来像这样的信号:

enter image description here

每个信号的长度为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()

结果是这样:

enter image description here

我不了解图表的一些内容:

  1. scipy是如何创建频率仓的?
  2. 为什么没有在0.01频率上出现预期的峰值?
  3. 不同峰的含义是什么?
python scipy signal-processing
1个回答
0
投票

我认为您对连贯性的期望与scipy的连贯性功能不匹配。

相干性度量的是线性系统中可以从输入到输出传输多少功率。当我查看您的曲线图时,0.01似乎是周期,但信号的周期并不意味着它的相干性是0.01,因为相干性是由功率谱密度组成的比率。因此,在使用相干之前,请尝试检查自相关和互相关序列,因为它们与它们直接相关。

因此,峰值表示将功率从输入传输到输出的可能性更大(但),但我不知道信号之间的关系。

Scipy的相干函数根据两个信号的PSD估计相干,而不是通过Welch的周期图方法对信号本身进行傅立叶变换。因此,如果您确定要进行计算,请务必检查窗口功能和采样率。

希望这会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.