accumulate values in aftereach function
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
dleal
el 19 de Abr. de 2022
Comentada: dleal
el 20 de Abr. de 2022
Hi all,
I would like to accumulate values that I collect in real time from a function that runs in the background.
For example
q = parallel.pool.DataQueue;
f1 = AfterEach(q, @afterFunc);
fut1 = parfeval(@genData, 0, q1)
function genData(q1)
while true
send(q1, randn)
end
end
Ideally I would be able to accumulate using persistent variable, but I understand persistant variables cannot be used in cunjunction with parfeval:
function afterfunc(x)
persistent y;
if isempty(y); y = []; end;
y = [ y, x];
plot(y); % for example
end
I know I could accumulate the values in the genData(q1) function, but then, after a few thousand iteration, I would be sending a very large vector and it would take longer (then desired) to send
0 comentarios
Respuesta aceptada
Raymond Norris
el 19 de Abr. de 2022
Persistent variables should work. Try the following
q = parallel.pool.DataQueue;
q.afterEach(@afterFunc);
f = parfeval(@genData, 0, q);
function genData(q)
while true
send(q, randn)
pause(1)
end
end
function afterFunc(x)
persistent y
if isempty(y)
y = [];
end
y = [y, x];
plot(y)
end
Más respuestas (0)
Ver también
Categorías
Más información sobre Asynchronous Parallel Programming en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!