3次元配列のガウシアンフィッティング

7 ビュー (過去 30 日間)
R.Kato
R.Kato 2020 年 4 月 28 日
回答済み: Kenta 2020 年 5 月 5 日
3次元配列に対して、t軸に対してガウシアンフィットを行いピーク位置を検出するプログラムを作りたいと思います。
この時、に対してすべての要素に対して、各々のピーク位置を算出するには、
for文を用いる以外にどのような手法が考えられますか。
出来るだけ処理時間の掛からない手法を検討したいと思います。
  1 件のコメント
R.Kato
R.Kato 2020 年 4 月 30 日
For文+findpeaks関数を使ってピーク検出を使用かと考えておりました。
ご提案頂いたparforを使った並列処理の方法も検討してみたいと思います。
ご回答有難うございました。

サインインしてコメントする。

採用された回答

Kenta
Kenta 2020 年 5 月 5 日
コメントのほうありがとうございました。
こちら改めて、回答とさせてください。
for文なしに書くことも可能と思います。例えば3D配列aをt方向に分割して、t-by-1のセル配列を作って、cellfunを使うなどです。他にもやり方はあると思います。
ただ、for 文で a(x,y,t1) のピーク位置検出はどのようなコードでされていますか?例えば、findpeaks関数でしょうか?forなしに書くと速くなるのはそうだと思うのですが、forの中身を工夫して、満足いく時間内に実行することも可能と思います。そのほうが自由度が高まってよいかもしれません。若干不規則な場合もありますが、並列でfor文をする、parforを使っても速くなります。
ただ、各ループが完全に独立していないといけなかったり、予期せぬ難しさもあるかもしれません。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange記述統計 についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!