[[20100907115946]] 『重心動揺の解析で軌跡長と内部面積をもとめたいの』(どい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『重心動揺の解析で軌跡長と内部面積をもとめたいのですが』(どい)

データより散布図は作成したのですがそこから
@軌跡長
A内部面積
を求めたいのですが初心者でなかなかうまくいかず苦戦しています。
よろしくご教授いただけたらと思います。


 どんなデータから、何を計算すべきかが分からないと答えようがありません。
  軌跡長というのは、データの順番につないだ線の長さを出すのですか?
  内部面積って、データを順番につないだ線は多角形を形成しているのですか?多角形にならない
  とすると、どのようにして面積を出すのですか?包絡線で囲まれた面積ですか?
 実際のデータと、手動で求めるときの求め方を説明ください。
 2010/09/07 12:55 (ちゅうねん)

データはX、Y座標で出てきています。たぶんその点をつないだ距離が軌跡長なのではと思っています。
内部面積は軌跡の外周に囲まれた面積をもとめたいので多角形にはならないものです。
あまり長けていないのでうまく説明ができなくてすみません。

 XY座標をつなげたものは線分の連続ですから、面積を求めるのには
 最終的に多角形になるのでは?
 ちゅうねんさんも仰られてますが実際のXYデータとセルの位置は示せませんか?
 (momo)

 あんまり面積とか数学的な事は詳しくありませんが
 とりあえず叩き台としてユーザー定義関数でも。
 (合ってるかな・・・?)

  Function myArea(X As Range, Y As Range, flg As Integer) As Double
  '##### flg = 1 : 面積
  '##### flg = 2 : 周囲長
  Dim myX() As Double, myY() As Double, buf(1 To 2) As Double
  Dim i As Long, r As Range
  If X.Cells.Count <> Y.Cells.Count Then Exit Function
  ReDim myX(1 To X.Cells.Count), myY(1 To Y.Cells.Count)
  i = 0
  For Each r In X
    i = i + 1
    myX(i) = r.Value
  Next r
  i = 0
  For Each r In Y
    i = i + 1
    myY(i) = r.Value
  Next r
  For i = 1 To UBound(myX) - 1
    buf(1) = buf(1) + (myX(i) * myY(i + 1) - myX(i + 1) * myY(i)) / 2
    buf(2) = buf(2) + Sqr((myX(i + 1) - myX(i)) ^ 2 + (myY(i + 1) - myY(i)) ^ 2)
  Next i
  buf(1) = buf(1) + (myX(i) * myY(1) - myX(1) * myY(i)) / 2
  buf(2) = buf(2) + Sqr((myX(1) - myX(i)) ^ 2 + (myY(1) - myY(i)) ^ 2)
  myArea = buf(flg)
  End Function

 (momo)

データはこんな感じで出てきます。時間はあとで挿入しました。エクセル初心者なのであまり詳細が伝えられずすみません。

時間   Y        X

0.01 -0.541384005 -3.30386856

0.02 -0.541384005 -3.30386856

0.03 -0.605656782 -3.353263917

0.04 -0.683878717 -3.512349951

0.05 -0.850949493 -3.618236483

0.06 -0.930891512 -3.636337821

0.07 -0.988180448 -3.672463847

0.08 -0.959788327 -3.760082381

0.09 -0.959788327 -3.760082381

0.1 -0.9908412 -3.80720512


 おはようございます。

 ご掲示のデータですとポイントを繋げた線分が閉じられていませんが
 どの面積を求めるのでしょう?
 (momo)

示したデータより散布図を作成しています。その内部面積(軌跡の外周に囲まれた面積)を求めたいのですが多角形というよりは変形した図形になると思います。本当はデータ数はもっと多いので掲示板に全部は乗せていません
もっと必要でしょうか。だいたい一分ぐらいのデータを測定はしました。

 ちゃんと線分が閉じられているのでしたら
 上に載せたコードを標準モジュールにコピペしてから
 セルに
 面積なら    =myArea(Xの範囲,Yの範囲,1)
 外周の長さなら =myArea(Xの範囲,Yの範囲,2)
 と入れてみてください。

 標準モジュールへの転記方法は
 Alt+F11でVBEが出るので 挿入 → 標準モジュール として
 出てきた白い画面に貼り付けるだけです。

 (momo)

ありがとうございます。丁寧にご指導たすかります。頑張ってやってみます

 >多角形というよりは変形した図形になると思います。
 この一文も気になりますが・・・。

 momoさんのmyArea関数、ちょこっとだけ気になったので

 外周は、ピタゴラスの定理だとして、
 面積は、
http://ja.wikipedia.org/wiki/%E5%A4%9A%E8%A7%92%E5%BD%A2#.E9.9D.A2.E7.A9.8D.E5.85.AC.E5.BC.8F

 これですよね? 昨日、子供の数学の証明問題に似たようなものがあったもので
 ピンときました。点の回る方向によって、負になるらしいので
 計算の最後に

 buf(1) = Abs(buf(1))

 これ入れておいた方がよさそうですねえ!!

 私には、データ分析の仕事は殆どきませんが、きた時に慌てないように
 私のアーカイブに入れておきます。

 ichinose


 あ、そうですね。
 測量まではいかないですが、ちょっとした面積を求めるのに良く使っていました。

 確かに座標の回転方向によって負になります。
 事実を知っていながらAbs入れ忘れてました・・・
 個人的には負の解が必要な時もあってワークシート関数で
 というかセルの方で=ABS(myArea(・・・))とすればいいかな〜と思っていたので。

 ichinoseさんありがとうございます。
 ichinoseさんのアーカイブに入るなんて光栄です・・・
 (momo)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.