绘制两个信号的相干性

Beginner

This tutorial is from open-source community. Access the source code

简介

本实验演示了如何使用 Python 的 Matplotlib 库绘制两个信号的相干性。两个信号的相干性是衡量它们线性关系的指标,值为 1 表示完全相干,值为 0 表示无相干。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签页,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会立即为你解决问题。

导入库

第一步是导入必要的库。我们将使用 NumPy 和 Matplotlib。

import matplotlib.pyplot as plt
import numpy as np

生成信号

接下来,我们将生成两个信号,其中包含一个 10 Hz 的相干部分和一个随机部分。我们还将向信号中添加白噪声。

## Fixing random state for reproducibility
np.random.seed(19680801)

dt = 0.01
t = np.arange(0, 30, dt)
nse1 = np.random.randn(len(t))                 ## white noise 1
nse2 = np.random.randn(len(t))                 ## white noise 2

s1 = np.sin(2 * np.pi * 10 * t) + nse1
s2 = np.sin(2 * np.pi * 10 * t) + nse2

绘制信号

现在我们可以使用 Matplotlib 在时域中绘制这两个信号。

fig, axs = plt.subplots(2, 1)
axs[0].plot(t, s1, t, s2)
axs[0].set_xlim(0, 2)
axs[0].set_xlabel('Time')
axs[0].set_ylabel('s1 and s2')
axs[0].grid(True)

绘制相干性

现在我们可以使用 Matplotlib 的 cohere 函数来绘制这两个信号的相干性。

cxy, f = axs[1].cohere(s1, s2, 256, 1. / dt)
axs[1].set_ylabel('Coherence')

显示绘图

最后,我们可以使用 Matplotlib 的 show 函数来显示绘图。

fig.tight_layout()
plt.show()

总结

本实验展示了如何使用 Python 的 Matplotlib 库绘制两个信号的相干性。我们生成了两个信号,其中包含一个 10 Hz 的相干部分和一个随机部分,向信号中添加了白噪声,并使用 Matplotlib 的 cohere 函数在时域中绘制了信号及其相干性。