人に聞けない痔の悩み、これでスッキリ >>

三次元空間における軌道がx座標,y座標,z座標で数百点で記録されているテキストファイル(例えば300×3)が数十個あります。
これらのファイルから、MATLABを使って軌道の平均を描きたいのですが、何か良い方法はないでしょうか?
問題点は記録点数やその値がまちまちなところでして、例えば一つ目のファイルではデータが280×3であるのに二つ目では330×3といった具合で、単純に平均を取るわけにはいかないと考えています。
丁度いい関数が見つからず、今のところは下記の案を考えているのですが、いまひとつしっくり来なくて。
・各ファイルの近似曲線を求め、これらの平均をとる
・測定点数から重みを算出し、加重平均を求める
よろしくお願いします。

A 回答 (1件)

平均をどの様な意図で使うのですか?


平均は、基準を決めて行うものです。
例えば系列Aと系列Bの平均を採ると雑音が減って
滑らかになるというのは、
「同じ周期でサンプリングされた場合」という基準(条件)があるので成立します。
つまりこの場合
系列Aのサンプル時間 系列A
0          a0
1          a1
2          a2
3          a3
・・・

系列Bのサンプル時間 系列B
0          b0
1          b1
2          b2
3          b3
・・・

というそれぞれ「2次元」で表されるサンプルを時間を基準に平均を採ることで、雑音を減らしています。

スレ主さんの
座標の場合でも、
A.時間を基準に置いた、座標の重心
B.原点(0,0)座標を基準に置いた、
  原点からの距離が一定の座標の重心

等、どこに基準を置くかで平均(重心)の意味合いが変わります。

普通はAだと思うのですが・・・・
この場合、時間軸を合わせて4次元のデータです。
Aの場合は時間(サンプリング周期)を指定していないのでなんとも言えないのですが、
1個目の系列 280点が時間t=[1:280]でサンプリング。
2個目の系列 330点が時間t=[1:330]でサンプリング。
されたものなら、
2個目の系列の時間t=[281:330]のサンプリングは捨て去るしかありません。なぜなら1個目の系列は時間t=[281:330]のサンプリングが無いのですから平均のしようがありません(外挿するなら別ですが)。

2個目の系列 330点が時間t=[-9.5:319.5]でサンプリングされたものなら、
スプラインなどを使用して、時間t=[1:280]の座標を補間してから
1個目の系列との平均(重心)を求めます。
スプラインなどの補間はx,y,zそれぞれ個別に行うのが簡単です。

--------------------
もしB.の原点(0,0)を基準に置いたやり方の場合は、球面座標に直して、距離が同じになる座標すべての重心を求めなければいけませんが、この演算はmatlabであっても簡単にはできないと思います。
    • good
    • 0

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


人気Q&Aランキング