diff --git a/join.m b/join.m index aaff97db17a323f06e28f22dc5e92b3225142985..555da8d347672fdd33c7973da36fe2416ebe516a 100644 --- a/join.m +++ b/join.m @@ -6,11 +6,7 @@ function data = join(slices,varargin) % data = join(slices,dimsToSplit,squeezeGrid,squeezeSlices) validSplitsFcn = @(x) isnumeric(x)||islogical(x); - -gridSplits = true ([1,ndims(slices )]); -slicesSplits = false([1,ndims(slices{1})]); - -defaultSplits = [gridSplits,slicesSplits]; +defaultSplits = [0,0,0,1,1]; % Parse input arguments p = inputParser; diff --git a/split.m b/split.m index 3b71f357179df5673cfd411a2a79788f4a34bbef..300d7709c00c7cd3a9727973aaf43abfad2e6a4b 100644 --- a/split.m +++ b/split.m @@ -5,13 +5,8 @@ function slices = split(data,varargin) % slices = split(data,dimsToSplit,squeezeGrid) % slices = split(data,dimsToSplit,squeezeGrid,squeezeSlices) -dimsSize = size(data); -numDims = ndims(data); - -defaultSplits = false(1,numDims); -defaultSplits(1:2) = true; - validSplitsFcn = @(x) isnumeric(x)||islogical(x); +defaultSplits = [0,0,0,1,1]; % Parse input arguments p = inputParser; @@ -24,25 +19,32 @@ dimsToSplit = logical(p.Results.dimsToSplit); squeezeGrid = p.Results.squeezeGrid; squeezeSlices = p.Results.squeezeSlices; +% Input size and dimensions +sz = size(data); +sz(end+1:5) = 1; +numDims = numel(sz); + % Infer split chunks sizes -numSplits = dimsSize; +numSplits = sz; numSplits(~dimsToSplit) = 1; numSplits(numDims+1:end) = []; dimDists = arrayfun(@(nsplit,sz) repelem(sz/nsplit,nsplit),... - numSplits,dimsSize,... + numSplits,sz,... 'UniformOutput',false); % Split input data into slices slices = mat2cell(data,dimDists{:}); if squeezeGrid - gridSize = dimsSize(dimsToSplit); + gridSize = sz(dimsToSplit); + gridSize(end+1:2) = 1; slices = reshape(slices,gridSize); end if squeezeSlices - SliceSize = dimsSize(~dimsToSplit); SliceSize(end+1:2)=1; + SliceSize = sz(~dimsToSplit); + SliceSize(end+1:2) = 1; slices = cellfun(@(s) reshape(s,SliceSize),slices,'UniformOutput',false); end end \ No newline at end of file