AIと戦って、あなたの人生のリスク診断 >>

数学をご専門とされておられる方々にご教示いただきたく存じます。
2次元平面上に、原点から任意の点への線分が多数与えられているとします。
それらの線分の角度
(無論角度の基準は何等かの方法で得ねばなりませんが)
の平均等のスペックを得たいのです。
しかしこの角度は循環分布である上、角度は回転により複数のラベルを持ちます。
そのため、上述の値を求める方法に妙案が浮かばず、大変困っております。
ご多忙のところ誠に恐縮には存じますが、どうかご教示の程何卒宜しくお願い申し上げます。

このQ&Aに関連する最新のQ&A

A 回答 (6件)

 30度の角と40度の角を平均すると、普通は35度になると言う答えが返ってくると思います。

しかし、見方を変えれば215度という答えの可能性も考えられます。数の平均と言うことからすれば35度以外は考えられませんが中間の方向と言うことからすると180度を超えて広がった2つの線の方向の平均の方向と考えれば215度の方向になるわけです。この例から、平均の方向を定義しようとすると多義的になって問題が起こりそうだと分かります。2つの角ならこのようなことは簡単に見通せますが多数の角の平均を求めようとする場合はどうなるかのかと言うのが質問者さんの悩みだと思います。実例で計算してみると基準の方向の取り方によって答えが一定せず、様々になることが確認できます。
 でもこれはそれほど複雑ではなく、単純に整理できると思います。整理のポイントは何らかの基準ですでに与えられている角度から基準の方向を元に測った角度への変換の際にどのように行っているかに注意することだと思います。角度の測り方の2通りのうち0から360で考えることにします。(-180から180も変換の違いに注意すればできると思いますが少し煩雑になりそう)
 a_i:与えられた角度(i=1~N)
 b :基準の角度
とすると変換後の角度b_iは
 b_i=a_i-b      (a_i-bが負にならない:case1)
 b_i=a_i-b+360  (上以外:case2)
となります。
従ってこのb_iの平均cはcase2となる場合がm個あるとして
 c=(Σ(a_i-b)+360*m)/N
  =c0-b+360*m/N
    c0=(Σa_i)/N
と求まります。cを元の角度の測り方に変換するにはcにbを加えて360以下ならそのまま、360を超えたら360を引くと言う操作を行います。
これから基準の取り方によって様々の値をとり得ることの様子がはっきりしたと思います。

 多義性の問題のうち最初の例で考えると、見方の違いというのは基準角の取り方の違いに対応し、基準の角度を30から40の間に取った場合は平均値は215、それ以外(2つの角の外側と言えるでしょうか)では35になると言うことが分かると思います。


(補足)
・上に述べたように基準角の選び方で結果が異なることがはっきりしたので、これを含めて何らかの対策を講じる必要があると思います。
・2次元平面上の絵などを、自動的に一定の方向へ向けるために回転させたいと言うことですが、きちんと上下を定めた方向に回転したいと言うことであればかなり難しい問題となるのではないでしょうか。上で計算される平均の角度が求めるべき画像の回転角とどう関係するのかは質問や補足の情報からはよく分かりませんが、画像の中の特定の1点と複数の点から上のように平均角を計算して画像の方向を定義しようとしているとするなら、上のような問題は必然的に出てきますし、回避できないと思いますので、別の方向で考えた方がいいようにも思えます。
    • good
    • 0
この回答へのお礼

ありがとうございます。質問の意図を詳細に書き込むことができない事情がありまして、皆様には大変ご迷惑をおかけしましたことを、どうかご容赦下さい。
ご指摘の通り、この多義性の問題を回避する尺度か何かを見つけねばならないことがわかりました。本当にありがとうございました。

お礼日時:2004/01/17 14:29

例1 / 方法1


(20+ 40+ 60+ 120+ 140+ 160)/6 = 540/6 = 90
ですので、0は計算間違いと思いますが。

例2. / 方法1
(-170 + -160 + -150 + 150 + 160 + 170)/6 = 0

例2. / 方法2
通常、-170 は 190と表現するとおもいますので
( 190 + 200 + 210 + 150 + 160 + 170)/6 = 1080/6 = 180

だと思いますが。
やはり、方法1でOKとなりますが。

方法1が問題になるのは、170,-170,-150というようなデータの場合で
(170 + -170 + -150)/3 = -50
(170 + 190 + 210)/3 = 190
のようなケースでしょう。

これで計算が違うなら、私も何を求めようとしているのか判りません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2004/01/17 14:26

やっぱり何をしようとされているのか、さっぱり分かりません。



弧度法って、ラジアンで測ることだったと思いますけど、それはさておき、

> 例1.
> 弧度法で20, 40, 60, 120, 140, 160の角度があるとします。
> 方法1.で平均0が得られ、満足。

0度を右にとると、上記のベクトルはすべて多かれ少なかれ上を向きますよね。
平均が右方向で満足というのは、私の理解を超えます。

> 例2.
> 弧度法で-170, -160, -150, 150, 160, 170の角度があるとします。
> 方法1.では平均が180となり、不満足。
> 方法2.では平均が0となり、満足。

同様に、すべて左方向のベクトルですから、180度=左方向で満足かと思いきや、
やはりこれも平均は右方向だという。不思議極まりない。

> 例3.
> 弧度法で-180, -135, -90, -45, 0, 45, 90の角度があるとします。
> 方法2.でも平均は0となりません。
> 方法3.で、-180の角度を基準とすると、平均0が得られ、満足。

左上を除く全方向ですから、平均は右下が妥当かと思えば、これも右方向だと
いいます。そこら辺の判断基準を説明してもらわないことには、答えは
出ません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2004/01/17 14:26

> それらの線分の角度


> (無論角度の基準は何等かの方法で得ねばなりませんが)
> の平均等のスペックを得たいのです。

何に使うのですか?
    • good
    • 0
この回答へのお礼

お返事有り難うございました。
2次元平面上の絵などを、自動的に一定の方向へ向けるために回転させたいのです。

お礼日時:2003/11/06 15:58

素人です。



位置ベクトルにして、単位ベクトルに変換。
(方向ベクトルを求めると言うのかな?)
全てのベクトルを合成して、そのベクトルの角を出す。

だいたい平均的な角度になると思いますが。

この回答への補足

お返事有り難うございます。
#1へのお礼への補足として、一例を挙げたいと思います。

方法1.
与えられた角度を例えば弧度法で-180 ~ 180で表現し、それらの平均を求め、各角度から今求めた平均を減じる。

方法2.
与えられた角度を例えば弧度法で0~360で表現し、以下方法1と同様。

方法3.
何等かの方法で与えられた方向の一つを基準とし、後は方法2と同様。


例1.
弧度法で20, 40, 60, 120, 140, 160の角度があるとします。
方法1.で平均0が得られ、満足。

例2.
弧度法で-170, -160, -150, 150, 160, 170の角度があるとします。
方法1.では平均が180となり、不満足。
方法2.では平均が0となり、満足。

例3.
弧度法で-180, -135, -90, -45, 0, 45, 90の角度があるとします。
方法2.でも平均は0となりません。
方法3.で、-180の角度を基準とすると、平均0が得られ、満足。
しかし、与えられる角度が極めて多い場合、いかにも不細工な方法で、非現実的。また如何なる例でもうまくいくかどうか不明。

補足日時:2003/11/06 15:56
    • good
    • 0
この回答へのお礼

お返事有り難うございます。
#1へのお礼への補足として、一例を挙げたいと思います。

方法1.
与えられた角度を例えば弧度法で-180 ~ 180で表現し、それらの平均を求め、各角度から今求めた平均を減じる。

方法2.
与えられた角度を例えば弧度法で0~360で表現し、以下方法1と同様。

方法3.
何等かの方法で与えられた方向の一つを基準とし、後は方法2と同様。


例1.
弧度法で20, 40, 60, 120, 140, 160の角度があるとします。
方法1.で平均0が得られ、満足。

例2.
弧度法で-170, -160, -150, 150, 160, 170の角度があるとします。
方法1.では平均が180となり、不満足。
方法2.では平均が0となり、満足。

例3.
弧度法で-180, -135, -90, -45, 0, 45, 90の角度があるとします。
方法2.でも平均は0となりません。
方法3.で、-180の角度を基準とすると、平均0が得られ、満足。
しかし、与えられる角度が極めて多い場合、いかにも不細工な方法で、非現実的。また如何なる例でもうまくいくかどうか不明。

お礼日時:2003/11/06 15:55

専門家ではないですが、アドバイスします。


点の座標(x,y)を(r,θ)座標系に変換すればよいでしょう。θは±πあるいは0~2πの範囲と規定します。
さらには(x,y)を複素数x+iyに置き換えると便利な場合があります。
    • good
    • 0
この回答へのお礼

早々のご教示有り難うございます。
ご指摘にあります0(rad.)と2π(rad.)が同じ値でないこと、つまり循環分布であることが、困難の一因であると考えております。
確かに極座標というより複素平面を考える方法もあるかもしれません。
しかし仮にそれで解決できるとしましても、そもそも角度1次元で表現できることを2次元で表現する冗長さに…
例えば定義域を-π~πとし平均がπ/3と得られたとしましょう。
そこでその角度を0として各角度を置換し、改めて上と同様の作業をしても、次にも止まる平均も一般には0となりません。
この作業を無限に繰り返すだけで…

例えば何か固定された絵をスキャニングするとしましょう。
どの方向が上かは、人間なら分かるかもしれませんが、
機械には難しいことです。
そこで「角度の平均を求め」ると、如何なる絵をもってきても、どの方向を基準(例えば右方向等々)にすれば良いか判断できると思います。
その基準の方向を得たい、これが私が今抱えている問題であります。

これに懲りず、今後ともご教示の程何卒宜しくお願い申し上げます。

お礼日時:2003/11/06 12:08

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q風向の平均値

風向の平均値を正確に出す方法を教えてください。

たとえば、
358°と2°という風向データの平均を取ると本当は0°なハズです。
しかしaverageを用いると180°になってしまいます。このような場合の平均をうまくとる方法を教えてください。

データ処理上大変困ってます。

Aベストアンサー

苦手分野なので、あくまでも参考として……
おそらく、ベクトルとして足してやり、単位ベクトルから角度を求めてやれば良いのだと思います。

358度:(-0.035,0.999)
2度:(0.035,0.999)

ベクトルの足し算:(-0.035+0.035,0.999+0.999)=(0,1.998)
スカラー:SQRT(0^2+1.998^2)=1.998

合算した単位ベクトル:(0,1) ⇒ 0度

Excelでやるとすると、こんな感じでしょうか。
A列に平均したい角度が入っているとします(例:A1に358、A2に2、A3に90、……)。
B列に =SIN(RADIANS(A1)) 
C列に =COS(RADIANS(A1)) どちらも下までコピーしてやります。
これでB、C列がベクトルの成分になります。

E1に =SQRT(SUM(B:B)^2+SUM(C:C)^2) これがスカラー
F1に =SUM(B:B)/E1
G1に =SUM(C:C)/E1 F1,G1が合算した単位ベクトル。ここから角度を出します。
H1に =DEGREES(ACOS(G1)) これが平均角度

苦手分野なので、あくまでも参考として……
おそらく、ベクトルとして足してやり、単位ベクトルから角度を求めてやれば良いのだと思います。

358度:(-0.035,0.999)
2度:(0.035,0.999)

ベクトルの足し算:(-0.035+0.035,0.999+0.999)=(0,1.998)
スカラー:SQRT(0^2+1.998^2)=1.998

合算した単位ベクトル:(0,1) ⇒ 0度

Excelでやるとすると、こんな感じでしょうか。
A列に平均したい角度が入っているとします(例:A1に358、A2に2、A3に90、……)。
B列に =SIN(RADIANS(A1)) 
C列に =CO...続きを読む


人気Q&Aランキング