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

조회 수: 9 (최근 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 CenterFile Exchange에서 起動と終了에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!