diff sequences/@subsampdata/subsampdata.m @ 0:672052bd81f8

Initial partial import.
author samer
date Wed, 19 Dec 2012 22:38:28 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sequences/@subsampdata/subsampdata.m	Wed Dec 19 22:38:28 2012 +0000
@@ -0,0 +1,38 @@
+function d=subsampdata(a,b,varargin)
+% subsampdata - Use arbitrary function to test and filter elements of another sequence
+%
+% subsampdata :: 
+%	 natural		~ sample rate, 
+%	 data(A),	~ source data,
+%   ...    	~ options) 
+%	-> data(A).
+%
+% Options
+%	'datafn'::   	Data A->A	~ override function to get data
+% 	'stringfn'::	Data A->String	~ override conversion to string
+%	'nextfn'::  	Data A->(Data A | []) ~ override next function
+%
+% Methods
+%
+%   source :: filterdata(A) -> data(A).
+
+if nargin==0, a=subsampdata(1,singleton(0)); end
+if isa(a,'subsampdata'), d=a;
+else
+	d.n=a; 	
+		
+	opts=prefs('datafn',@datafn,'stringfn',@stringfn,'sizecheck',0,varargin{:});
+	opts.nextfn=@nextfn;
+	d=class(d,'subsampdata',ddata(b,size(b),opts));
+end
+
+function x=datafn(d), x=head(source(d));
+function s=stringfn(d), s=sprintf('subsamp(%d)',tostring(d.n));
+function o=nextfn(o)
+	for i=1:o.n
+		o=next_c(o);
+		if isempty(o), break; end
+	end
+
+	
+