Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonのMatplotlibで角度スペクトル(位相スペクトル)をプロットする方法

信号処理において、角度スペクトル(位相スペクトル)は各周波数成分の位相情報を可視化するために用いられます。PythonのMatplotlibでは、phase_spectrum()メソッドを使うことで簡単に描画できます。この記事では、実際のコード例とともにその手順を詳しく解説します。

角度スペクトルをプロットする手順

以下の手順に従って、角度スペクトルを描画することができます。

  • 図のサイズを設定し、サブプロット間および周囲のパディング(余白)を調整します。
  • 乱数のシード値を設定して、再現性のある結果を得られるようにします。
  • サンプリング間隔 dt を初期化し、そこからサンプリング周波数を算出します。
  • 時間軸 t のデータ点を作成します。
  • NumPyを使用して、ノイズ成分 nsercnse および信号 s を生成します。
  • subplots()メソッドで図とサブプロットを作成します。
  • プロットにタイトルを設定します。
  • phase_spectrum()メソッドで角度スペクトルをプロットします。
  • show()メソッドで図を画面に表示します。

コード例

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

np.random.seed(0)

dt = 0.01  # サンプリング間隔
Fs = 1 / dt  # サンプリング周波数
t = np.arange(0, 10, dt)

# ノイズの生成:
nse = np.random.randn(len(t))
r = np.exp(-t / 0.05)
cnse = np.convolve(nse, r) * dt
cnse = cnse[:len(t)]
s = 0.1 * np.sin(4 * np.pi * t) + cnse

fig, axs = plt.subplots()
axs.set_title("Phase Spectrum")
axs.phase_spectrum(s, Fs=Fs, color='C2')

plt.show()

コードのポイント解説

このコードでは、まずnp.random.seed(0)により乱数シードを固定し、実行するたびに同じ結果が得られるようにしています。サンプリング間隔dt = 0.01からサンプリング周波数Fs = 100Hzを導出し、np.arange(0, 10, dt)で0〜10秒の時間軸を作成します。

ノイズは正規分布に従う乱数nseに対し、指数関数的に減衰するカーネルrで畳み込みを行うことで、色付きノイズ(相関のあるノイズ)を生成しています。最後に、振幅0.1・周波数2Hzの正弦波にこのノイズを加えた合成信号sを作成し、その位相スペクトルを緑色('C2')で描画しています。

出力結果

PythonのMatplotlibで角度スペクトル(位相スペクトル)をプロットする方法

実行すると、上記のような位相スペクトルのグラフが表示されます。横軸は周波数(Hz)、縦軸は位相(度)を表しており、信号に含まれる各周波数成分の位相特性を確認できます。

  1. PythonとMatplotlibを使って3次元の等高線図(コンタープロット)を作成する方法

    Matplotlibは、データ可視化のために広く使われている人気のPythonライブラリです。データの可視化は分析において非常に重要なステップであり、複雑な計算を行ったり数値を一つずつ確認したりしなくても、データの中で何が起きているのかを直感的に把握できるようになります。また、定量的な洞察を効果的に伝える手段としても役立ちます。Matplotlibは主に2次元のプロットを作成するために使用されますが、オブジェクト指向のAPIを備えており、作成したグラフをPythonアプリケーションに組み込むことも可能です。IPythonシェル、Jupyter Notebook、Spyder IDEなど、さまざ

  2. PythonとMatplotlibで3次元散布図(3D散布図)を作成する方法をわかりやすく解説

    Matplotlibとは?Matplotlibは、Pythonで最も広く使われているデータ可視化ライブラリの一つです。データの可視化は数値を一つひとつ確認したり複雑な計算を行ったりしなくても、データ全体の傾向や特徴を直感的に把握できるようにしてくれる重要なステップであり、定量的な洞察を効果的に伝えるためにも欠かせません。Matplotlibは主に2次元のグラフ描画に使用されますが、オブジェクト指向APIを備えており、作成したグラフをPythonアプリケーションに簡単に組み込むことができます。IPythonシェル、Jupyter Notebook、Spyder IDEなど、さまざまな環境でも利用