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

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

採用された回答

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

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeデータのインポートと解析 についてさらに検索

Community Treasure Hunt

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

Start Hunting!