- ベストアンサー
二点の座標から距離や角度を求めたいのですが、Matlab
こんにちは、Matlabの初心者ですがよろしくお願いします。 ある座標、たとえば、A(x1, y1) B(x2, y2)があったとして、 この二点間の距離は、 sqrt((x2-x1)^2 + (y2-y1)^2) だと思いますが、もっと簡潔に求めることができる関数とかが導入されていたりしないかと思いました。AやBを定義しておいて、AとBだけを使うことができないかと思いました。 また、この二点を通る直線とX軸とがなす角度は、 atan(sqrt((y2-y1)^2)/sqrt((y2-y1)^2)) で求められるかと思いますが、これも同様にもっと簡潔な方法がないかと思いました。 いかがでしょうか。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
# Mathlabに関しては知識がありません m(__)m 距離に関しては一般的にはそのsqrtでやる式でしょう X軸との角度についてはお示しの式では求まりません atanの引数が常に1になってしまいます たぶん分母が sqrt((x2-x1)^2) としたかったのでしょうが この場合の sqrtは必要ないと思います なぜなら (x2-x1)の2乗の平方根とはつまり(x2-x1)と等価になります # 符号は考慮する必要があるでしょうが Mathlabにatan2といった組み込み関数があるならこちらを使ったほうがいいように思います atanですと除算が入るため 0除算の例外を自前で処理しないといけません atan2ですとその点を考慮した値を戻します ただしatan2の取りうる値域が -90から90といった場合もあるので 360度に拡張するのでしたら引数に与える垂直/水平成分の符号を加味して加減算してください
その他の回答 (1)
- Gotthold
- ベストアンサー率47% (396/832)
# ちょっと検索したくらいで、Matlabの知識はほとんどありません。 二点間のユークリッド距離を求めるなら、 hypot や pdist が使えると思います。 角度計算は No.1 の通りatan2がより適切でしょう。