diff general/cellutils/cscanl.m @ 13:03694e5c8365

Reorganised some high order list functions to correct class-based method dispatch; fixed some docs.
author samer
date Wed, 16 Jan 2013 12:12:34 +0000
parents
children beb8a3f4a345
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/general/cellutils/cscanl.m	Wed Jan 16 12:12:34 2013 +0000
@@ -0,0 +1,24 @@
+% cscanl - scanl for cell arrays
+%
+% cscanl :: 
+%    (S,X->S)   ~'scannning function',
+%    S          ~'initial value',
+%    {[N]->X}   ~'data to scan, sequence of length L'
+% -> {[N]->S}.
+
+function Y=cscanl(f,y,X,varargin)
+	Y=cell(size(X));
+	if nargin>3
+		opts=prefs('draw',0,varargin{:});
+		for i=1:size(X,2)
+			y1=f(y,X{i});
+			Y{i}=y1;
+			if opts.draw, opts.plotfn(i,y,X{i},y1);  end
+			optpause(opts);
+			y=y1;
+		end
+	else
+		for i=1:size(X,2), y=f(y,X{i}); Y{i}=y; end
+	end
+		
+