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

PythonとMatplotlibで縦方向のマグニチュードスペクトルをプロットする方法

Matplotlibの magnitude_spectrum() メソッドを使うと、信号の縦方向(縦軸)のマグニチュードスペクトルを簡単に可視化できます。ここでは、正弦波にノイズを加えた合成信号を例に、その手順を解説します。

プロットの手順

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  • 再現性のある乱数を得るために、シード値を固定します。
  • サンプリング間隔 dt を初期化し、サンプリング周波数 Fs を求めます。
  • 時間軸 t のデータ点を作成します。
  • NumPy を使ってノイズ成分 nsercnses を生成します。
  • subplots() メソッドで図とサブプロットを作成します。
  • プロットのタイトルを設定します。
  • 縦方向のマグニチュードスペクトルをプロットします。
  • 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("Longitudinal Magnitude Spectrum")
axs.magnitude_spectrum(s, Fs=Fs, scale='dB', color='C1')
plt.show()

実行結果

このコードを実行すると、4πラジアンの正弦波に畳み込みノイズを重ねた信号に対して、dBスケールで表された縦方向のマグニチュードスペクトルがオレンジ色(C1)で表示されます。スペクトルには、元の正弦波の周波数成分が明確なピークとして現れ、ノイズによる広がりも確認できます。

PythonとMatplotlibで縦方向のマグニチュードスペクトルをプロットする方法

ポイント解説

  • magnitude_spectrum(): 信号のフーリエ変換を行い、各周波数成分の大きさ(振幅)を計算してプロットします。
  • Fs引数: サンプリング周波数を指定することで、横軸が正しい周波数(Hz)で表示されます。
  • scale引数: 'dB' を指定すると対数スケール(デシベル)で表示され、広いダイナミックレンジを持つ信号の視認性が向上します。
  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など、さまざまな環境でも利用