Select Git revision
MatchFilename.m
Mark Winter authored
MatchFilename.m 1.98 KiB
function outNames = MatchFilename(parseStruct, camera,frame,channel)
outNames = {};
bValidStacks = checkNonemptyField(parseStruct, 'stack');
if (bValidStacks)
useStacks = true;
numStacks = max(vertcat(parseStruct.stack))+1;
else
useStacks = false;
numStacks = [];
end
bValidIter = checkNonemptyField(parseStruct, 'iter');
if ( bValidIter )
useIter = true;
else
useIter = false;
end
bValidCam = checkNonemptyField(parseStruct, 'cam');
if ( bValidCam )
unqCams = unique({parseStruct.cam}.');
if (length(unqCams)>1)
useCams = true;
else
if ( ~isempty(camera) && all(unqCams~=camera) )
return
end
useCams = false;
end
else
if ( ~isempty(camera) )
return
end
useCams = false;
end
if ( useIter )
if ( useStacks )
iterIdx = floor((frame) / numStacks);
stackIdx = frame - iterIdx*numStacks;
timeMask = (vertcat(parseStruct.stack) == stackIdx) & (vertcat(parseStruct.iter) == iterIdx);
else
timeMask = (vertcat(parseStruct.iter) == frame);
end
else
timeMask = (vertcat(parseStruct.stack) == frame);
end
name = {};
if ( ~isempty(camera) && useCams )
camChanMask = ( strcmpi(camera,{parseStruct.cam}.') & (vertcat(parseStruct.chan)==channel) );
if (any(camChanMask))
name = {parseStruct(timeMask & camChanMask).name}.';
end
elseif (~isempty(channel))
chanMask = (vertcat(parseStruct.chans) == channel);
if (any(chanMask))
name = {parseStruct(timeMask & chanMask).name}.';
end
else
name ={parseStruct(timeMask).name}.';
end
outNames = name;
end
function bNonempty = checkNonemptyField(parseStruct, fieldname)
bNonempty = all(arrayfun(@(x)(~isempty(x.(fieldname))), parseStruct));
end