0001 function p = partition(param)
0002
0003
0004
0005
0006
0007
0008
0009 if nargin==0
0010 param = 0;
0011 end
0012
0013
0014
0015 if ~isa(param,'cell')
0016 n = param;
0017 p.array = logical(speye(n,n));
0018 p.array = sortrows(p.array);
0019 p = class(p,'partition');
0020 return
0021 end
0022
0023
0024
0025
0026 if isempty(param)
0027 p.array = speye(0);
0028 p = class(p,'partition');
0029 return
0030 end
0031
0032
0033 maxv = 0;
0034 for i=1:length(param)
0035 m = max(param{i});
0036 maxv = max([m,maxv]);
0037 end
0038 n = maxv;
0039 m = length(param);
0040
0041
0042
0043 p.array = logical(sparse([],[],[],m,n,n));
0044
0045
0046 for i=1:m
0047 row = zeros(1,n);
0048 row(param{i}) = 1;
0049 p.array(i,:) = logical(row);
0050 end
0051 p.array = sortrows(p.array);
0052
0053 p = class(p,'partition');
0054
0055 if ~check(p)
0056 p.array = speye(0);
0057 error('The cell array does not define a valid partition');
0058 end
0059