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

9 次查看(过去 30 天)
koji fukumoto
koji fukumoto 2020-7-16
いつもお世話になっております。
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 CenterFile Exchange 中查找有关 起動と終了 的更多信息

Community Treasure Hunt

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

Start Hunting!