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()
![](https://blogimg.goo.ne.jp/user_image/6c/47/ea3cc21141062b06a2c0c04b52ef6a73.png)
次のような配列要素ごとの計算をしなくて良いので、記述がやや楽。
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()
![](https://blogimg.goo.ne.jp/user_image/02/a3/dae4fcd467f0291175545238d781bc0b.png)
これを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()
![](https://blogimg.goo.ne.jp/user_image/71/f6/39c9ddd21ba4a2cc0332d004ddd2a295.png)
のこぎり波など不連続データが多いと周波数帯域が非常に高い所まで必要になるので、一旦三角波を使ってフィルタ特性を見てみようか、な。
※コメント投稿者のブログIDはブログ作成者のみに通知されます