2 つの信号の相関をプロットする

Beginner

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

はじめに

この実験では、Python の Matplotlib ライブラリを使って 2 つの信号の相関をプロットする方法を示します。2 つの信号の相関は、それらの線形関係の尺度であり、値が 1 の場合には完全な相関を示し、値が 0 の場合には相関がないことを示します。

VM のヒント

VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。

時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

ライブラリのインポート

最初のステップは、必要なライブラリをインポートすることです。私たちは NumPy と Matplotlib を使用します。

import matplotlib.pyplot as plt
import numpy as np

信号の生成

次に、10Hz の相関部分とランダムな部分を持つ 2 つの信号を生成します。また、信号にホワイトノイズを追加します。

## 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 を使って 2 つの信号を時間領域でプロットすることができます。

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関数を使って 2 つの信号の相関をプロットすることができます。

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

プロットを表示する

最後に、Matplotlib のshow関数を使ってプロットを表示することができます。

fig.tight_layout()
plt.show()

まとめ

この実験では、Python の Matplotlib ライブラリを使って 2 つの信号の相関をプロットする方法を示しました。10Hz の相関部分とランダムな部分を持つ 2 つの信号を生成し、信号にホワイトノイズを追加し、Matplotlib のcohere関数を使って時間領域での信号とその相関をプロットしました。