python - 了解 Python 3 matplotlib.plot.cohere 和 scipy.signal.coherence 函数
问题描述
我试图理解为什么在 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()
这给了我一个图,显示在频率 0 和频率 0.5 处的相干性约为 1,两者之间的相干性值较低。
然后我尝试了这个:
plt.cohere(y, y2)
plt.show()
它给了我一个在 ~ 频率 0、0.5 和 1 处相干性为 1 的图,两者之间的相干性较低。
好的,那么,我现在该如何解释呢?我的目标是用它来衡量某些频率区间的相干性,例如 1-5 Hz、5-12 Hz 等……我假设为此目的我会平均每个数据点的相干系数在这些频率边界之间。但是,如果信号频率为 5,我不明白为什么我的相干值的输出在 0-0.5 和 0-1.0 之间。这是否意味着我应该将图形的频率轴乘以信号频率? 我非常感谢一些帮助更好地理解这个输出。
解决方案
推荐阅读
- ms-access-2016 - 用外键替换 LongText 字段(以节省空间)会导致错误:无法执行连接、分组、排序或索引限制
- r - R+shiny:从非反应函数中读取输入变量
- r - 使用fread的两个参数设置
- c# - 使用 LINQ 比较基于同一类的两个 List
- jmeter - JMeter - 在运行时减少线程
- html - 为什么顶部导航栏的背景颜色不显示?
- python - spacy 如何获得带有一些空格异常的单词列表?
- python - 按字符拆分列表中的字符串
- colors - glTF - 设置颜色 - baseColorFactor
- puppet - 如果校验和不同,如何替换文件然后重新启动服务?