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

PythonPythonBeginner
今すぐ練習

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

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、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関数を使って時間領域での信号とその相関をプロットしました。