甘味もpythonを独学で勉強して、まだまだ初心者の域を出ることができませんがよろしくお願いいたします。
今回は、二次元の座標データ(縦、横)から角度を計算する処理をpythonを使って行って行きたいと思います。
こういったデータ解析の処理には、pythonのパッケージの一つである"numpy"というのが便利なので、こちらの導入も含めて紹介していきたいと思います。
pythonの角度のデータ処理にはnumpyが圧倒的便利
まずはnumpyのインポートのコードを書く
import numpy as np
次は実際にデータ解析をするcsvファイルを読み取る
import numpy as np data = np.genfromtxt("data.csv", delimiter = ",") x1 = data[:,0] y1 = data[:,1] x2 = data[:,2] y2 = data[:,3]
ここまでのコードでそれぞれの座標のX軸、Y軸のデータが含まれたことになります。これらそれぞれの座標データを計算処理することで角度を出す処理に移っていきます。
座標データの角度計算には、tan(タンジェント)を用いる
二つの座標を結ぶ線が軸に対して形成する角度を算出する上では、三角関数のtan(タンジェント)を使うことが重要になります。二つの座標によって計算されたtanの実際の値を処理すると角度に直すことが出来ます。これをtanの逆関数(文系の甘味が書いているので厳密ではありません)といいます。
そのため、これからの処理としてはそれぞれの座標のデータからtanを求める処理を行っていきます。
実際のコードの例はこちらになります。
import numpy as np data = np.genfromtxt("data.csv", delimiter = ",") x1 = data[:,0] y1 = data[:,1] x2 = data[:,2] y2 = data[:,3] x3 = x1-x2 y3 = y1-y2 tan = y3/x3
tanを求めるためには、それぞれの座標のX成分、Y成分それぞれの差分を求めることが必要になります。
ここからさらにtan の逆関数を求める処理を行っていきます。
import numpy as np data = np.genfromtxt("data.csv", delimiter = ",") x1 = data[:,0] y1 = data[:,1] x2 = data[:,2] y2 = data[:,3] x3 = x1-x2 y3 = y1-y2 tan = y3/x3 atan = np.arctan(tan)*180/math.pi
最後の行の処理によって、タンジェントの逆関数すなわちatan(アークタンジェント)が求められます。ここでもnumpyのモジュールでアークタンジェントの値を計算するnp.arctan()が使われていますね。
またarctan()だけではラジアンの値になっており、我々のなじみの深い度数(いわゆる°)に変換する必要があり、末尾にはその計算式が追記されています。
ここまでの処理でようやく角度が度数として算出されます。
複数のcsvファイルでそれぞれの角度を求めたい場合には、前回紹介したループ回路の計算処理の箇所に、角度計算用の計算処理を書き換えるだけでできるようになります。