samer@4: function tm=iterate_sched(nextfn,X,T,varargin) samer@4: % iterate_sched - Iterate function under control of timer samer@4: % samer@4: % iterate_sched :: samer@4: % (A=>A) ~'state transformer action', samer@4: % A ~'initial state', samer@4: % real ~'time between updates in seconds' samer@4: % options { samer@4: % drawnow :: {0,1} /0 ~'call drawnow after each iteration'; samer@4: % busy_mode :: {'queue','drop'} /'queue' ~'See TIMER'; samer@4: % its :: natural / inf ~'iteration limit' samer@4: % -> timer. samer@4: samer@4: opts=prefs('its',inf,'drawnow',0,'busy_mode','queue','props',{},varargin{:}); samer@4: if opts.drawnow, post=@drawnow; else post=@nop; end samer@4: samer@4: tm=rsched(@action,nows,T,opts.its,iterdata(nextfn,X)); samer@4: function [err,s]=action(t_sched,dt,s) samer@4: err=nows-t_sched; samer@4: s=nextfn(s); samer@4: post(); samer@4: end samer@4: end samer@4: