c言語等を用いて実験データの解析を行おうと思っています。
データの形式は(x・・・時間軸、y・・・値)の列になっていて、
これをグラフにすると、パルス状の波形が連続する形になっています。
求めたい情報は、各パルス波形の山に対応する時刻の羅列
なのですが、現在ではガウス曲線近似機能のついたグラフソフトで、
一個一個手作業で求めています。
これを、解析プログラムを作って自動化しようと思っているのですが、
ガウス曲線(鋭い立ち上がりの)に近い部分を自動的に検出する方法、
また、フィッティングを数値計算的に行う方法がわかりません。
このようなアルゴリズムを考える上で参考になるようなHPや文献を
ご存知の方がいらっしゃれば、教えていただきたいと思っています。
No.3ベストアンサー
- 回答日時:
パルスを探すアルゴリズムの具体的な文献はしりませんが、
たとえば、xが小さい方から順にyの値を見ていき最大値を探し
yが一定値以下になったら次の最大値を探し始めるようなのでは
どうでしょうか。
言葉で説明すると難しいのでコードで示すと以下のようになると
思います。(適当に書いたのでバグがあるかも。)
int i;
int flag_peak=0; /* 0: 谷 1: 山 */
float y_max=0;
float x_peak=0;
float x[1000], y[1000]; /* data */
/* ここで x と y の配列にデータをセットする。 */
for(i=0; i<1000; i++){
if( y[i]<50 ){
if( flag_peak ==1 ) printf("peak %d %d\n", x[i], y[i]);
flag_peak=0;
y_max=0;
}
if( y[i]<80 ) continue;
if( y_max<y[i] ) {
y_max = y[i];
x_peak = x[i];
}
flag_peak=1;
}
ここで、パルスは上向きで最大値が常に80以上になる、
パルス間の谷は常に50以下になることを仮定しています。
この50と80の差はyのふらつきを考慮したものです。
また、データは xについてソートされているものとしています。
このパルスの位置は最大値の場所と定義していますが、
フィッティングする場合は、この値を フィッティングの初期値として
使うことになると思います。
フィッティングは、最小二乗法や 最尤推定法 (maximum likelihood method)
などがあります。ふつうは最小二乗法かな? データ処理や統計処理の教科書に
載っていると思います。たぶん。
長くなってすみません。
プログラムまで考えていただいて本当にありがとうございます!
パルスのフィッテングを行った後、次のパルスへと移行するときの
考え方の参考になりそうです。
No.2
- 回答日時:
話としては、混合モデル(Mixture model)の推定
というやつだと思いますが、
私も現在勉強中なので、アルゴリズムに関しては、
詳しく教えて差し上げられません。
「混合モデル」や「Mixture model」で
検索されてみてはいかがでしょうか?
私の読んでいる本では、EMアルゴリズムという
アルゴリズム(とGibbs Samplerというアルゴリズム)
を使っているようです。
No.1
- 回答日時:
#無学なため、ガウス曲線なるものを知りませんが・・・
鋭い立ち上がり位置を検出、というのであれば、サンプルデータを数値微分してやれば一発では?
んで、アルゴリズム関連の書籍としては
・奥村晴彦『C言語による最新アルゴリズム事典』技術評論社,1991年,ISBN4-87408-414-1,2400円
がオススメ・・・というか定番ですね。
なお、ソースコードはVectorでダウンロード可能です(http://www.vector.co.jp/soft/data/prog/se002453. …。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「未使用」と「不使用」ってど...
-
PCの内蔵メモリにデータは残る?
-
パレート図等で「N=100」とあ...
-
XMLデータってなんですか?
-
高速フーリエ変換でデータ数が...
-
データ用HDDの別のPCへの乗せ替え
-
Excel グラフで数値の正と負の...
-
差し込み印刷がうまくできません
-
フォーマットとデフラグについ...
-
インスタの設定について。 イン...
-
日本通信の当月利用データ量は...
-
正規化(時間)
-
【MSOffice Publisher2010差し...
-
ネットカフェから、メールでき...
-
電子辞書の画面をPCに映すには
-
d’の求め方
-
oracleで 10,20, 30, というデ...
-
Word 差し込み印刷 リストの...
-
エクセルで縦に並んだデータを...
-
CSVファイルを・…
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「未使用」と「不使用」ってど...
-
インスタの設定について。 イン...
-
高速フーリエ変換でデータ数が...
-
XMLデータってなんですか?
-
エクセルで縦に並んだデータを...
-
PCの内蔵メモリにデータは残る?
-
ネットカフェから、メールでき...
-
データ用HDDの別のPCへの乗せ替え
-
日本通信の当月利用データ量は...
-
【MSOffice Publisher2010差し...
-
パレート図等で「N=100」とあ...
-
Excelの“並び替え”で文字コード...
-
Excel Webクエリ
-
エクセルのグラフのデータ系列...
-
窓関数(方形窓)について
-
フラッシュメモリ SSD、USB、SD...
-
ワードの差し込み印刷のデータ...
-
シリアルRS-232出力機器からの...
-
CSVファイルを・…
-
フーリエ変換のデータの補間に...
おすすめ情報