教えて!gooにおける不適切な投稿への対応について

こんにちは、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))
で求められるかと思いますが、これも同様にもっと簡潔な方法がないかと思いました。

いかがでしょうか。よろしくお願いします。

gooドクター

A 回答 (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度に拡張するのでしたら引数に与える垂直/水平成分の符号を加味して加減算してください
    • good
    • 0

# ちょっと検索したくらいで、Matlabの知識はほとんどありません。



二点間のユークリッド距離を求めるなら、
hypot や pdist が使えると思います。

角度計算は No.1 の通りatan2がより適切でしょう。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

人気Q&Aランキング