Python3でSin波を描画する
電波について、知識不足であったので学んだことを整理する記事を書いた。
記事を書く際、電波を表現する Sin(サイン)波をキレイに書きたかった。
ですが、フリーハンドでキレイに書けるはずもない。
そこで思い浮かんだのが、Python3で書いてみること。
ネットワークエンジニアとして自動化などに活用しよう思い学んだPythonだったが、思いも寄らないことに役立った。
1: import matplotlib.pyplot as plt
2: import japanize_matplotlib
3: import math
4: import numpy as np
5: x = range(0,721)
6: y1 = np.array([math.sin(math.radians(z)) for z in x])
7: y2 = np.array([math.sin(math.radians(z+15)) for z in x])
8: plt.plot(x, y1, label="本来の電波")
9: plt.plot(x, y2, label="遅れてきた電波", linestyle="dashdot")
10: plt.plot(x, y1+y2, label="干渉後", color="red")
11: plt.legend(loc="lower right")
12: plt.grid()
13: plt.show()
・1-2行目:グラフ表示のためmatplotを読み込む。Code上でpltと略して扱えるようにする。japanize_matplotlibも読み込むことで日本語表示できる。
・3行目:数学関数を扱えるようにするためmathを読み込む。今回はsin関数を使うため。
・4行目:数値計算処理を扱えるようにするためnumpyを読み込む。今回はsin関数の各数値をリスト化して、同じ要素同士の算術演算を行うため。
・5行目:sin関数の位相を0°〜720°に変化させる。この範囲にしたのは2周期分の波形を書きたかったから。
・6-7行目:sin波の0°〜720°における各値をy1またはy2にリストとして入れる。
・8-10行目:各sin波のグラフデータを作る。
・11行目:グラフの凡例を右下に表示する。
・12行目:グラフの目盛りを表示する。
・13行目:グラフを表示する。
上記のCodeで書いたグラフはこちらの記事の3つ目の図(遅れてきた電波2がない版)となる。
動作環境は下記の通り。
・OS:macOS Majave ver.10.14.6
・Python3 v3.6.8
・matplotlib 3.3.3
・japanize-matplotlib 1.1.3
・numpy 1.19.4
なお、mathモジュールは標準モジュール。
この記事が気に入ったらサポートをしてみませんか?