MATLAB PollableDataQueue获取最后一个值



是否可以使MATLAB可轮询数据队列后进先出(LIFO(而不是先进先出(FIFO(?或者,有没有办法获得队列中的最后一个条目而不是第一个条目?

例如,请参阅以下代码,该代码说明了PollableDataQueue的当前行为:

%parpool;
q = parallel.pool.PollableDataQueue;
f = parfeval(@test,1,q);
for jj = 1:4
poll(q)
pause(0.25)
end
fetchOutputs(f)
function x0 = test(q)
x0 = [];
for jj = 1:20
x0 = [x0, rand(1)];
send(q, x0);
pause(0.01);

end
end
ans =
[]

ans =
0.7918

ans =
0.7918    0.1528

ans =
0.7918    0.1528    0.0854

ans =
Columns 1 through 12
0.7918    0.1528    0.0854    0.9955    0.3557    0.1679    0.6713    0.5398    0.6599    0.9344    0.7200    0.4450
Columns 13 through 20
0.6622    0.4427    0.9791    0.5114    0.0200    0.6054    0.0479    0.3470

呼叫";轮询(q(";按照添加到队列(FIFO(的顺序,逐个返回添加到x0的值。相反,我想检索队列中调用poll(q(的时刻的最后一个值。

例如,由于下面的代码在对"0"的连续调用之间等待0.25秒;poll(q(";,并且由于值每0.01秒被加到x0上;轮询(q(";则x0的第25个值应该已经被记录。然而,第二次我叫";轮询(q(";我只得到第一个条目(FIFO而不是LIFO(。

您可以在for循环中使用while循环来使队列为空:

for jj = 1:4
while q.QueueLength > 0
x0 = poll(q);
end
x0
pause(0.25)
end

相关内容

  • 没有找到相关文章

最新更新