Python: scipy.signal.coherence的用法及代码示例

  • 1. scipy.signal.coherence 用法
    • 用法 API
    • 返回值
  • 2. 示例

1. scipy.signal.coherence 用法

Python 中 scipy.signal.coherence 的作用为:使用 Welch’s 方法评估离散时间信号 XXX 与 YYY 的幅度平方相关估计 (MSC, Magnitude Squared Coherence Estimation) CxyC_{xy}Cxy​。Cxy=∣Pxy∣2/(Pxx×Pyy)C_{xy} = |P_{xy}|^{2/(P_{xx} \times P_{yy})}Cxy​=∣Pxy​∣2/(Pxx​×Pyy​),其中 PxxP_{xx}Pxx​ 与 PyyP_{yy}Pyy​ 为 XXX 与 YYY 的功率普密度估计值 (PSD, Power Spectral Density Esitmation),PxyP_{xy}Pxy​ 为 XXX 与 YYY 的交叉谱密度估计 (CSD, Cross Spectral Density Estimation)。

用法 API

scipy.signal.coherence(x,                    # (array_like) 测量值的时间序列y,                   # (array_like) 测量值的时间序列fs=1.0,             # (float) x 与 y 时间序列的采样率windows='hann',      # (str, tuple 或 数组) 窗口nperseg=None,        # (int) 每个段的长度,如果为 str 或 tuple,则设置为256noverlap=None,        # (int) 段之间重叠的点数nfft=None,         # (int) 如果需要用 0 填充 FFT,则使用 FFT 的长度detrend='constant', # (str) 制定如何去除每段的趋势axis=-1             # (int) 计算相关性的轴
)

返回值

  • (1) f: ndarray :采样频率组数;
  • (2) Cxy: ndarray :xxx 与 yyy 的幅度平方相关性。

2. 示例

from scipy import signal
import numpy as np
import matplotlib.pyplot as plt# 下面代码生成两个具有一共同特征的测试信号
fs = 16000             # 采样频率
N = 1e5                    # 采样点数
amp = 50               # 信号幅值
freq = 1000                # 信号的特征频率
noise_power = 0.001 * fs / 2       # 信号的噪声功率
time = np.arange(N) / fs           # 信号的时间轴
b, a = signal.butter(2, 0.25, 'low') # 构造 butter 滤波器
x = np.random.normal(scale=np.sqrt(noise_power), size=time.shape)
y = signal.lfilter(b, a, x)
x += amp*np.sin(2*np.pi*freq*time)
y += np.random.normal(scale=0.1*np.sqrt(noise_power), size=time.shape)# 计算 x 与 y 的幅度平方相关估计
f, Cxy = signal.coherence(x, y, fs, nperseg=1024)# 使用 welch 方法分别计算 x 与 y 各自的功率谱密度估计
f, Pxx = signal.welch(x, fs, nperseg=1024)
f, Pyy = signal.welch(y, fs, nperseg=1024)# 下面绘制结果
lnxy = plt.semilogy(f, Cxy, color='r', label='$C_{xy}$')
plt.ylabel('Coherence')# 绘制第二个 y 轴,用于标注 x 与 y 的功率谱密度估计
plt.twinx()
lnx = plt.semilogy(f, Pxx, color='g', label="$P_{xx}$")
lny = plt.semilogy(f, Pyy, color='b', label="$P_{yy}$")
plt.ylabel('PSD [$V^2/Hz$]')
plt.xlabel('frequency [Hz]')# 绘制图例
lns = lnxy + lnx + lny
labs = [l.get_label() for l in lns]
plt.legend(lns, labs)
plt.show()

代码执行结果如下图所示:

Python: scipy.signal.coherence的用法及代码示例相关推荐

  1. python max()_Python Decimal max()用法及代码示例

    Decimal#max():max()是一个Decimal类方法,该方法比较两个Decimal值并返回两个最大值. 用法: Decimal.max() 参数: Decimal values 返回: t ...

  2. python中weekday_Python calendar firstweekday()用法及代码示例

    日历模块允许输出类似于程序的日历,并提供与日历相关的其他有用功能. "日历"模块中定义的函数和类使用理想化的日历,当前的公历日历在两个方向上都无限期扩展. 在Python中,cal ...

  3. python中perf_counter_Python time.perf_counter()用法及代码示例

    由于时间模块提供了各种与时间有关的功能.因此,有必要导入时间模块,否则会出错,因为时间模块中存在perf_counter()的定义. perf_counter()函数始终以秒为单位返回时间的浮点值.返 ...

  4. python function gamma_Python math gamma()用法及代码示例

    Python用其语言允许进行各种数学运算,这在科学领域具有多种应用.这样的Python产品之一就是内置的gamma()函数,该函数以数字方式计算函数中传递的数字的伽玛值. 用法:math.gamma( ...

  5. python compare()_Python Decimal compare()用法及代码示例

    Decimal#compare():compare()是一个Decimal类方法,它比较两个Decimal值. 用法:Decimal.compare() 参数:十进制值 返回: 1 –如果a> ...

  6. python macos listdir_Python os.listdir()用法及代码示例

    python中的os.listdir()方法用于获取指定目录中所有文件和目录的列表.如果我们未指定任何目录,则将返回当前工作目录中的文件和目录列表. 用法: os.listdir(path) 参数: ...

  7. isdigit函数python 小数,Python Pandas Series.str.isdigit()用法及代码示例

    Python是进行数据分析的一种出色语言,主要是因为以数据为中心的Python软件包具有奇妙的生态系统. Pandas是其中的一种,使导入和分析数据更加容易. Pandas str.isdigit() ...

  8. python math.sinh_Python numpy.sinh()用法及代码示例

    numpy.sinh(x [,out])= ufunc'sin'):此数学函数可帮助用户计算所有x(作为数组元素)的双曲正弦值. 等效于1/2 *(np.exp(x)-np.exp(-x))或-1j ...

  9. python的userlist_Python Collections.UserList用法及代码示例

    Python列表是array-like数据结构,但与之不同的是它是同质的.单个列表可能包含数据类型,例如整数,字符串以及对象. Python中的列表是有序的,并且有一定数量.根据确定的序列对列表中的元 ...

  10. python dict setdefault_Python dict setdefault()用法及代码示例

    字典Python中的数据是一个无序的数据值集合,用于存储数据值(如Map),与其他仅将单个值作为元素的数据类型不同,Dictionary拥有key:value对. 在Python字典中,setdefa ...

最新文章

  1. 华南理工大学计算机操作系统课程设计大作业银行家死锁避免算法模拟,2016春操作系统大作业银行家死锁避免算法模拟.doc...
  2. Android第十五课 Jni自带的iconv库不支持GBK转码
  3. MDT跨网段UEFI部署系统
  4. navigating the online library
  5. ARC 101 D - Median of Medians
  6. 集成JavaFX和Swing
  7. 简答String类的操作特点以及static方法的注意事项
  8. python 随机padding_Python backend.spatial_2d_padding方法代码示例
  9. python内置函数可以返回列表元组_十九、python内置函数汇总
  10. Scala实现Mapreduce程序4-----数据去重
  11. unity Rigidbogy组件
  12. 【解决方案】Ehome协议视频融合平台EasyCVR在危化行业的安防监控应用
  13. 计算不可压缩流体 -- 数学基础
  14. 天津春季高考历年计算机考试卷,最新春季高考历年真题-天津市春季高考语文试卷...
  15. Spring中FrameMaker中文乱码
  16. 威斯康星大学-机器学习导论2020
  17. 图解图库JanusGraph系列-一文知晓“图数据“底层存储结构(JanusGraph data model)
  18. statsmodels.tsa.arima_model.ARMA and statsmodels.tsa.arima_model.ARIMA have been removed in favor of
  19. linux设备驱动读书笔记(转)
  20. 【Unity编辑器扩展实践】、查找所有引用该图片的预制体

热门文章

  1. 国内外常用的MD5在线解密网站
  2. 六龙争霸3D国战怎么玩 国战玩法详解
  3. 利用NMDS对药物处理下肠道菌群微生物群落多态性分析
  4. openwrt nas_真牛气,矿渣蜗牛星际也能玩软路由Openwrt和NAS虚拟一体机
  5. swagger主页访问,返回报错500
  6. 面试总结:给应届生一些找工作的基本建议,毕竟我踩坑多
  7. wps缺少字体ubuntu
  8. python画美女代码_3分钟画字符画跟女神表白,利用python字符串、列表方法
  9. php经典实例读后感,读卡耐基《人性的弱点》章节之读后感
  10. java微信公众号图文消息编辑器,如何使用微信公众号自带的编辑器做出简洁舒适的图文排版...