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()
のこぎり波など不連続データが多いと周波数帯域が非常に高い所まで必要になるので、一旦三角波を使ってフィルタ特性を見てみようか、な。