Code covered by the BSD License  

Highlights from
TDMS Reader

TDMS Reader

by

 

13 Jan 2011 (Updated )

Read TDMS files v1 & v2 without DLL Current Version: 2.5

TDMS_getGroupChanNames(metaStruct)
function metaStruct = TDMS_getGroupChanNames(metaStruct)
%TDMS_getGroupChanNames  Small function to get group/channel names from paths
%
%   metaStruct = TDMS_getGroupChanNames(metaStruct)
%
%   INPUT
%   =======================================================================
%   metaStruct (structure) containing field:
%   	.objectNameList : (cellstr), name of each object (unmodified from
%                          file) of format => /'<group>'/'<chan>'
%
%   OUTPUT
%   =======================================================================
%   metaStruct (structure) with added fields:
%       .groupNames : (cellstr), same length as objectNameList, group name
%                      for each input object, root will be empty
%       .chanNames  : (cellstr), "     ", channel name for each object,
%                      root and group objects will be empty
%       .isChan     : (logical)
%
%   EXAMPLE OUTPUT (of relevant fields)
%   =======================================================================
%     objectNameList: {1x68 cell}
%         groupNames: {1x68 cell}
%          chanNames: {1x68 cell}
%             isChan: [1x68 logical]
%
%   See Also: TDMS_readTDMSFile

%PARSING RULES:
%=============================================================
%A path follows the following format:
%channel objects /'<group>'/'<chan>'
%groups objects  /'<group>'
%root            '/'

%ACTUAL SPECIFICATION =====================================================
%http://zone.ni.com/devzone/cda/tut/p/id/5696
%
%Every TDMS object is uniquely identified by a path. Each path is a string
%including the name of the object and the name of its owner in the TDMS
%hierarchy, separated by /. Each name is enclosed by the ' ' symbols. Any'
%symbol within an object name is replaced with two ' symbols. The following
%table illustrates path formatting examples for each type of TDMS object:
%
%It might be possible to get by the current filter ..., CONSIDER REWRITING
%/'myGroup''/''name'/' <- 

objectPaths = metaStruct.objectNameList;

pat1 = '/''(?<groupNames>.*?)''/''(?<chanNames>.*?)''$'; %Channel Object
pat2 = '/''(?<groupNames>.*?)''$(?<chanNames>)';  %Group Object
pat3 = '/(?<groupNames>)(?<chanNames>)';  %Root object
pat = [pat1 '|' pat2 '|' pat3];
temp = regexp(objectPaths,pat,'names');

metaStruct.groupNames = cellfun(@(x) x.groupNames,temp,'UniformOutput',false);
metaStruct.chanNames  = cellfun(@(x) x.chanNames,temp,'UniformOutput',false);
metaStruct.isChan     = ~cellfun('isempty',metaStruct.chanNames);



Contact us