save関数を別スレッドで実行したい

17 views (last 30 days)
koji fukumoto
koji fukumoto on 16 Jul 2020
Answered: Toshinobu Shintai on 23 Jul 2020
いつもお世話になっております。
UDP受信したデータをグラフに描画しつつ、指定フレーム毎に受信データをファイル保存するプログラムを組んでおります。
例えば、1000フレーム目のデータを受信し、データを加工してグラフ描画した後に、
1~1000フレームの「加工データ(ワークスペース変数)」をsave関数を用いてファイルに書き出しているのですが、
この書き出し処理に時間が掛かる為、1001フレーム目のデータ受信が遅延するという問題が出ております。
MATLABは、ほとんどの行列計算処理関数はマルチスレッド対応となっているようですが、
saveのような「計算処理ではない関数」を別スレッドで実行することで問題を回避したいのですが、
そのようなことはMATLABで可能でしょうか?
(C言語的な発想で言っているので、全く的外れな内容でしたらすみません)
尚、「Parallel Computing Toolbox」は使わない方向で考えておりますが、
「Parallel Computing Toolbox」を使えば上記の事ができるのかどうかは一応ご教示頂きたいです。
よろしくお願い致します。

Accepted Answer

Toshinobu Shintai
Toshinobu Shintai on 23 Jul 2020
以下のような方法はどうでしょうか。
MATLABを二つ起動し(それぞれA, Bとします)、Aは通常通りUDP受信したデータをグラフに描画する処理を行い、UDP受信するごとに、Bに対して受信したデータをそのままUDP送信します。BはUDP受信したデータが1000フレームに到達した時にファイルに保存します。
UDP送信にかかるオーバーヘッドが大きくないのであれば、これで対処できるのではと思います。
ちなみに、Parallel Computing Toolboxを使うとクライアントとワーカーの間でデータの送信が可能なようなので、工夫次第でできるかもしれません。

More Answers (0)

Categories

Find more on Data Acquisition Toolbox Supported Hardware in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!