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

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

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



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


この記事の目次



背景・目的


積分をやったんで、微分も記事にまとめます。

2波形について試してみました。



動作環境


Windows 10
・winpython 64bit 3.4.4



プログラム

ソースコード


###############################################################################
# 離散データの微分を計算するプログラム
###############################################################################
#==============================================================================
# ライブラリインポート
#==============================================================================
import numpy as np
import matplotlib.pyplot as plt
 
#==============================================================================
# テスト用離散データの作成
#==============================================================================
flag = 1
 
if flag == 0:
    x = np.linspace(0, 2.2, num=2**5+1)
    y = 2.1*x**4 - 3.3*x**3 - 2*x + 1
elif flag == 1:
    x = np.arange(-7.0, 8.0, 1)
    y = x**2
 
#==============================================================================
# 微分計算
#==============================================================================
dy = np.gradient(y)
 
#==============================================================================
# グラフ
#==============================================================================
# 微分対象波形
plt.plot(x, y, 'r-', label='wave')
plt.plot(x, y, 'r.')
 
# 微分波形
plt.plot(x, dy, 'b-', label='differential')
plt.plot(x, dy, 'b.')
 
# グラフのタイトル・目盛設定
plt.title("Differential")
 
# 凡例の位置設定
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')
 
# y 軸目盛
if flag == 1:
    plt.ylim([-20, 70])
 
file_name = 'differential.jpg'
plt.savefig(file_name)
plt.show()



結果

ソースコードの『テスト用離散データの作成』の flag == 0 の時の微分波形を図1 、 flag == 1 の時の微分波形を図2 に示します。

図1 flag == 0


図2 flag == 1



コメント

図1 では微分が正しく行われているか分からなかったので、図2 から微分が正しく行われていることを確認しました。

これで物理量の変換も出来るようになりました。



以上