タイトル通り。ループごとに一定の間隔、たとえば 60 秒を設定したいと考えています。
私の問題は、ループ内に外部デバイスで測定を実行するためのコードがあることです。この測定には 5 ~ 10 秒かかります。そのため、間隔時間は各測定にかかる時間に依存するため、ループ内で単に一時停止(60)を使用することはできません。
ループの時間間隔を修正する方法はありますか?
並列スレッドを使用して、目的を達成できるようです。1 つのスレッドが、ワーカー スレッドを使用して 60 秒ごとに測定を開始し、測定が時間間隔を妨げないようにします。
おそらく、次のbatch
ような関数を試してみてください。
while(True)
hBatch = batch(@doMeasurement);
pause(60);
measurement = fetchOutputs(hBatch){1}
end
関数を使用する方が良いでしょうtimer
:
t = timer('TimerFcn', @doMeasurement, 'Period', 60.0);
start(t)
次のようなものが必要です。
k=1; % or any value except 0
time1=clock;
while ~(k==0)
time2=clock;
k=etime(time2,time1);
% your statements
loop