1

タイトル通り。ループごとに一定の間隔、たとえば 60 秒を設定したいと考えています。

私の問題は、ループ内に外部デバイスで測定を実行するためのコードがあることです。この測定には 5 ~ 10 秒かかります。そのため、間隔時間は各測定にかかる時間に依存するため、ループ内で単に一時停止(60)を使用することはできません。

ループの時間間隔を修正する方法はありますか?

4

2 に答える 2

3

並列スレッドを使用して、目的を達成できるようです。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)
于 2012-10-31T04:58:24.483 に答える
0

次のようなものが必要です。

k=1; % or any value except 0
time1=clock;
while ~(k==0)
time2=clock;
k=etime(time2,time1);
% your statements
loop
于 2012-11-01T03:52:51.227 に答える