0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

pythonで基本波抽出

Posted at

pythonで基本波(第一高調波)を抽出する

pythonには非常に便利なライブラリがたくさんありますが,基本波波形を抽出するものを見つけられなかったので実装してみました。
pythonの練習にも良いかも...

今回はcsvファイルで準備したダミー波形から基本波を抽出してみたいと思います!

ダミー波形はこんな感じ...
完全に自分用なのできっちり1周期分のデータじゃないとうまく動きません:sweat_smile:
2deg刻みで1周期分(358degまで)の180点としてみました。

dummy.png

フーリエ級数展開のn=1まで足し合わせたものが基本波なので,numpyを使って計算する関数はこんな感じになります...

BASIC_WAVE.py
def BASIC_WAVE(data):
    x = data[:, 0]
    y = data[:, 1]

    #周期T
    T = x[-1] #x最後の値
    pi = np.pi
    
    #各係数を計算
    a0 = 2/T * np.sum(y*np.cos(0*2*pi*x/T))
    a1 = 2/T * np.sum(y*np.cos(1*2*pi*x/T))
    b1 = 2/T * np.sum(y*np.sin(1*2*pi*x/T))
    
    #基本波(第一高調波)
    Y = a0/2 + a1 * np.cos(2*pi*x/T) + np.sin(2*pi*x/T)
    
    return x, Y

とてもシンプルでスバラシイ✨

実際に使ってみるとこんな感じ...

test.py
#元データファイル名(pythonプログラムと別の階層ならパス)
raw = 'dummy.csv'

#元データをnumpy配列として読み込み
data = pd.read_csv('dummy.csv',encoding='shift_jis',index_col=None).values

#基本波を計算
#元データファイル名(pythonプログラムと別の階層ならパス)
raw = 'dummy.csv'

#x,yラベルを取得(無理やりですみませんm(__)m)
data = pd.read_csv(raw,encoding='shift_jis',index_col=None)
xlabel = data.columns.values[0]
ylabel = data.columns.values[1]

#元データをnumpy配列として読み込み
data = pd.read_csv(raw,encoding='shift_jis',index_col=None).values

#基本波を計算
x, Y = BASIC_WAVE(data)

#波形表示
%matplotlib inline#jupyterじゃない場合は不要
plt.rcParams['font.family'] = ['IPAexGothic']
plt.rcParams['figure.figsize'] = [8, 6]
plt.style.use('ggplot')

fig, ax = plt.subplots()
ax.plot(x, data[:,1]) #元波形プロット
ax.plot(x, Y)         #基本波波形プロット

plt.ylabel(ylabel)#タテ軸のラベル
plt.xlabel(xlabel)#ヨコ軸のラベル
plt.show()

jupyter notebookでの使用を想定しています。

image.png

基本波計算できました!
良い感じではないでしょうか。

では,お疲れ様でした!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?