简介
本实验演示了如何使用 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 函数在时域中绘制了信号及其相干性。