• ベストアンサー

風向の平均値

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

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.6

苦手分野なので、あくまでも参考として…… おそらく、ベクトルとして足してやり、単位ベクトルから角度を求めてやれば良いのだと思います。 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)) これが平均角度

noname#124388
質問者

お礼

わかりやすい解説ありがとうございます。 Degrees⇒Radian・・・で僕の考えは終わってました。 ⇒ベクトルまで持っていけばできそうですね。 ありがとうございます。

その他の回答 (5)

  • koko88okok
  • ベストアンサー率58% (3839/6543)
回答No.5

もしかしたら、358°の表記が間違っていませんか? 風向きなら、真北を 0°とすると、東へ 2°と西へ 2°との平均は、2°と -2°との平均0°となりますが、 2°と 358°だと、急に風向きが1回転するように変化したことになり、平均は 180°となるように思います。

noname#124388
質問者

お礼

解析データの関係上、北を0度として+でしか表記をしていません。

  • TTak
  • ベストアンサー率52% (206/389)
回答No.4

風向の場合は、平均よりも分布の方が良いと思われますが如何でしょう? 0°±22.5° →a[%] 45°±22.5° →b[%] 90°±22.5° →c[%] 135°±22.5° →d[%] 180°±22.5° →e[%] ・・・・・・ などです。

noname#124388
質問者

お礼

分布はとって解析しています。 CFD(数値シュミレーション)と比較したいので平均値の矢印が出せたら比較しやすいかなーと思い作りたかったので調べていました。 書き込みありがとうございました。

  • n_na_tto
  • ベストアンサー率70% (75/107)
回答No.3

補足です。 2つの風向がちょうど反対のときはエラー表示にする場合は、 =IF(ABS(A2-B2)=180,"×",MOD(AVERAGE(A2:B2)+(ABS(A2-B2)>180)*180,360)) _____A_____B_____C 1__角1__角2__劣弧の中点[平均?] 2____30____80___55 3____30___150___90 4____30___240__315 5____30___330____0 6____30___350___10 7____30___210___× 3つ以上の平均は考えなくていいですよね...?

noname#124388
質問者

お礼

3つどころか何百個の平均をしたいので。。。 ちょっとこの考えは使えませんでした。 使用方法を詳しく明記せずすみません。 書き込みありがとうございました♪

  • n_na_tto
  • ベストアンサー率70% (75/107)
回答No.2

円周上の2点を結ぶ劣弧(短いほうの弧)の真ん中 の角度を0°~359°で求めたい、ということでしょうか? _____A_____B_____C 1__角1__角2__劣弧の中点[平均?] 2____30____80___55 3____30___150___90 4____30___240__315 5____30___330____0 6____30___350___10 C2 =MOD(AVERAGE(A2:B2)+(ABS(A2-B2)>180)*180,360) 下方向・↓

noname#124388
質問者

お礼

試してみたいと思います。 ありがとうございます。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

直感的には、算術平均をとった場合にその数値は、中間の値(正しい値)となる場合と、反対方向(ご質問の例)を示す値の場合のどちらかになるはずと思われます。 なので、角度をt1、t2とするなら (1) (t1-t2)mod 360 と(t2-t1)mod 360の絶対値の小さい方を使って計算する。 (2) (t1+t2)/2 及びその反対方向(+180°)でt1に近い方を採用する(差が小さい方) でよいのでは? (書き方が違うけど、1と2は同じです) きちんとした、アプローチをするなら・・・ 風向は向きを持っているので、実はベクトルなので・・・ 極座標をx,y座標に変換して平均してから、角度に戻す要領で、 (3) 座標 ( (sin(t1)+sin(t2)) , (cos(t1)+cos(t2)) ) の角度を求めれば良いという考え方ができます。 この方法であれば、データの重み付けをすることや3個以上のデータを平均することも簡単ですね。 実際の計算処理では、座標点までは単純計算で求められるものの、角度に戻す時に、符合による判定などが必要になってしまうので、こちらも、処理上はほぼ1、2に近いとも言えますが、考え方に関してはこれが正確では?

noname#124388
質問者

お礼

ん~そうですね! 全てベクトル分解して平均を取ってからまた直せば平均になりますね。 ラジアンに変換してまでは考えたのですが、もっと原点に返ればいいんですね。ありがとうございます。

関連するQ&A