解析エンジニアの自動化 blog

コツコツと自動化した方法を残す blog

Python で波形データを積分する



こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。


この記事の目次



背景・目的


今まで波形の変換、近似、補間を記事にまとめてきました。

今度は変換とはまた違う " 積分 " を行なってみます。

積分すると物理量が変わり、波形の意味が変わります。

1つの波形から色々な情報を読み取るためにも積分についてまとめます。



動作環境


Windows 10
・winpython 64bit 3.4.4



プログラム

ソースコード


###############################################################################
# 離散データの積分値の累積を計算するプログラム
###############################################################################
#==============================================================================
# ライブラリインポート
#==============================================================================
import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
 
#==============================================================================
# テスト用離散データの作成
#==============================================================================
x = np.linspace(0, 2.2, num=2**5+1)
y = 2.1*x**4 - 3.3*x**3 - 2*x + 1
 
#==============================================================================
# 積分計算
#==============================================================================
integral_y_cumtrapz = integrate.cumtrapz(y, x, initial=0)
 
#==============================================================================
# グラフ
#==============================================================================
# 積分対象波形
plt.plot(x, y, 'r-', label='wave')
plt.plot(x, y, 'r.')
 
# 積分波形
plt.plot(x, integral_y_cumtrapz, 'b-', label='integral')
plt.plot(x, integral_y_cumtrapz, 'b.')
 
# グラフのタイトル・目盛設定
plt.title("Integral")
 
# 凡例の位置設定
plt.legend(loc='upper left')
 
# 罫線
plt.grid(which='major', color='black', linestyle='-')
plt.grid(which='minor', color='black', linestyle='-')
 
# 軸ラベル
plt.xlabel('x')
plt.ylabel('y')
 
file_name = 'integral.jpg'
plt.savefig(file_name)
plt.show()



結果

積分した結果を図1 に示します。

図1 積分


赤い波形を積分すると青い波形になりました。



コメント

波形データって奥が深いですね。

微分も後でやってみます。



以上