質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

829閲覧

加速度のような振幅がある連続したデータから一番振幅が激しいデータ部分を取り出したい

yohehe

総合スコア48

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/07/18 09:07

編集2018/07/19 06:23

加速度のようなデータを連続して取得した場合に一番振幅が激しい場所を特定のarray数で抽出したいと考えた時、どのようなプログラムが一番望ましいでしょうか。

例えば

python

1a=np.random.uniform(-0.5,0.5,100) 2b=np.random.uniform(-2,2,100) 3c=np.random.uniform(-0.5,1,100) 4d=np.hstack((a,b)) 5e=np.hstack((d,c)) 6plt.plot(e) 7plt.show() 8 9コード

イメージ説明
ランダムでデータを作成。

このデータから振幅が激しい部分を含めたarray raw150を取り出したいとすると
np.max(e)で最大値を計算して、その前後を取り出すような方法だといまいちだと思うのですが、何か最適ないい方法がありますでしょうか。

追記

python

1num=10 #移動平均の個数 2b=np.ones(num)/num 3 4e_=np.convolve(e, b, mode='same')#移動平均 5f=e-e_ 6f=f*f 7f_=np.convolve(f,b,mode="same") 8plt.plot(e,label="original") 9plt.plot(f_,label="ido_heikin") 10plt.grid() 11plt.legend() 12plt.show()

イメージ説明
教えていただいたやり方で移動平均のグラフ化まで行なってみました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2018/07/18 09:45

「振幅が激しい」って何ですか?
yohehe

2018/07/18 09:53

加速度のようなデータだと、データ中で一番前時間と比較して数値が差が大きい部分が含まれた部分と考えていたのですが
yohehe

2018/07/18 09:57

プログラムで一つ前データとの差が大きい部分を取り出したとしても、それが欲しい値が含まれたものだとは限らないですね。
guest

回答1

0

ベストアンサー

"激しさ"がどういうのをイメージしているのかわからなかったので
適当に作りました

もとの信号の適当な区間幅の移動平均をとって
もとの信号から引いて
それを二乗して
適当な区間幅の移動平均をとったものが赤線になります。

イメージ説明

投稿2018/07/18 10:10

ozwk

総合スコア13512

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yohehe

2018/07/18 10:38

ozwk様、曖昧な質問でしたが返答ありがとうございます。 1.測定したデータの平均値をとって、もとの信号値から引いて、二乗のデータを作る。 振幅が激しいという言い方が曖昧でしたが、この方法であれば、データから平均値からの差がもっとも大きい部分として抽出することができそうです。 プログラムに起こせるよう頑張ってみて追記いたします。アドバイスありがとうございます。
yohehe

2018/07/19 06:06

ozwk様、ありがとうございました。convolveという関数を用いて移動平均を出せるようになりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問