ネットが遅くてイライラしてない!?

お世話になります。
RubyやPythonを用いて微分を行いたいです。
微分を行いたいものなのですが、センサーで得られた速度波形を微分して加速度に直したいといった事柄です。
現在結果ファイルが
Velo.csv
という形でありまして
x,y
0.00,0.229075371
0.01,0.511501761
0.02,0.533869402
0.03,0.238477063
0.04,0.774666843
0.05,0.278105997
0.06,0.136263281
0.07,0.684879618
0.08,0.993783737
0.09,0.763641391
0.10,0.210637728
以下継続
という形式で1列目は観測時刻、2列目が観測速度
となっております。

関数を微分となると y=ax^2+bx+cのような関数を与えた場合は SymPyのdiff()関数で結果の出し方は分かるのですが
上記のようなCSVファイルの状態から関数化し、微分を考えないといけないとなった時点で手が止まってしまいました。
上記のような状態から微分につなげるための考え方やサンプルコード、解説サイトなどがありましたら是非とも教えてください。

質問者からの補足コメント

  • うーん・・・

    お答えいただいてから考えたのですが、
    実測の波形データという特性上、sin関数とcos関数に分解し、高速フーリエ変換などで周波数領域で考えて、ローパスフィルターとハイパスフィルターを設定しないとノイズが多い結果となってきました。
    確かに単純物理量で、計測した値が真値なら問題ないのでしょうが、どうしてもノイズが混ざる計測結果になっていると思われます。
    あと、通常の物理量で考慮すると、本来は存在しないのですが、単純物理量で考慮するとx=0.00秒時の加速度とy=0.10秒時の加速度を出せないのも後々面倒なことになりそうで。
    速度から加速度に変換するときにはかなり複雑に考えないと難しそうだという事が分かりました。

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/07/10 15:44

A 回答 (1件)

>CSVファイルの状態から関数化し、微分を考えないといけない


関数化しなくてよいのでは。物理データなら純粋に直前の値で速度を計算するので問題ないと思います。
ex) X=0.01での加速度: (0.511501761 - 0.229075371)÷0.01=28.242639

Rubyでの計算例)
https://paiza.io/projects/FkPc-bQXUvcWka8p_OFpzA …
この回答への補足あり
    • good
    • 0
この回答へのお礼

お答えありがとうございます。
単純物理データなら確かにおっしゃられる通りでできますね。
ありがとうございます。

お礼日時:2020/07/10 14:33

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

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


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング