日々の記録

ほどよく書いてきます。

FFTフィルタの位相シフト

2024年06月16日 22時49分10秒 | プログラム

FFTして周波数帯域をカットしてからの逆FFTで信号を戻す作戦。

単純な波形においては問題がなさそうである。

3倍高調波である75Hzまで入れると・・・(カットは100Hzで)
25Hzも75Hzも大丈夫そうな感じではある。

コメント (4)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Pythonで三角波

2024年06月16日 21時01分39秒 | プログラム

pythonは配列の要素にアクセスせず、配列のまま計算できるのが良い所である。

import numpy as np
import matplotlib.pyplot as plt

freq = 1.0 #周波数として
 
time=np.arange(0.000,0.001*2**10,0.001) #時間の配列を作る
Signal = np.sin(2 * np.pi * freq * time) #正弦波を作る
 
plt.plot(time,Signal)
plt.show()
 
次のような配列要素ごとの計算をしなくて良いので、記述がやや楽。
for i = 0 to Ubound(time())
    Signal(i) = sin(2 * pi() * freq * time(i))
next i
 
 
正弦波は単一周波数しか含まれないので、矩形波や三角波を作ろうと思うと・・・・
 
import numpy as np
import matplotlib.pyplot as plt

freq = 2.0 #周波数として
time=np.arange(0.000,0.001*2**10,0.001) #時間の配列を作る

Signal = (time * freq) % 1  #余りを求める
 
plt.plot(time,Signal)  
plt.show()
 
これを0.5ずらして絶対値とったら三角波ですかね。
 
import numpy as np
import matplotlib.pyplot as plt

freq = 2.0 #周波数として
time=np.arange(0.000,0.001*2**11,0.001) #時間の配列を作る

Signal = 1-np.abs((time * freq/2) % 1-0.5)*2

plt.plot(time,Signal)
plt.show()
 
 
のこぎり波など不連続データが多いと周波数帯域が非常に高い所まで必要になるので、一旦三角波を使ってフィルタ特性を見てみようか、な。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする