function Y=cellfilt(fn,X)
% cellfilt - Filter cell array with boolean test
%
% cellfilt :: (A->bool), {[N]->A} -> {[M]->A}.
% cellfilt :: (A->bool), {[1,N]->A} -> {[1,M]->A}.
%
% eg, cellfilt(@iseven,{1,2,3,4}) = {2,4}

% SA 2008-06-27 - Now returns cell array with same orientation as input

Y={};
[X,E]=shiftdim(X);
for i=1:numel(X)
	if fn(X{i}), Y=vertcat(Y,X(i)); end
end
Y=shiftdim(Y,E);
