samer@4: % foldcols :; samer@4: % ([[M]], [[N]] -> [[M]]) ~'folding function', samer@4: % [[M]] ~'initial value', samer@4: % [[N,L]] ~'data to scan, sequence of length L' samer@4: % -> [[M]]. samer@4: samer@4: function y=foldrcols(f,y,X,varargin) samer@4: if nargin>3 samer@4: opts=prefs('draw',0,varargin{:}); samer@4: for i=size(X,2):-1:1 samer@4: y1=f(y,X(:,i)); samer@4: if opts.draw samer@4: opts.plotfn(i,y,X(:,i),y1); samer@4: end samer@4: optpause(opts); samer@4: y=y1; samer@4: end samer@4: else % streamlined version samer@4: for i=size(X,2):-1:1, y=f(y,X(:,i)); end samer@4: end samer@4: samer@4: