CDATA constant data object class constructor. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DESCRIPTION: CDATA constant data object class constructor. Create a constant data object. Properties: name - name of data object vals - data values tags - cell array: could be one descriptive tag per value xunits - this is used to label the x-axis on plots. yunits - this is used to label the y-axis on plots. version - version of the constructor code created - creation time of this fsdata object. Possible constructors: c = cdata() - creates a blank data object c = cdata(pl) - creates a data object with the given parameter list which contains 'N' and 'Val' c = cdata(vals) - creates a data object with the given data values. c = cdata(N,v) - creates a data object with N samples all of value, v. HISTORY: 30-01-2007 Hewitson Creation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0001 function c = cdata(varargin) 0002 % CDATA constant data object class constructor. 0003 % 0004 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0005 % 0006 % DESCRIPTION: CDATA constant data object class constructor. 0007 % Create a constant data object. 0008 % 0009 % Properties: 0010 % name - name of data object 0011 % vals - data values 0012 % tags - cell array: could be one descriptive tag per value 0013 % xunits - this is used to label the x-axis on plots. 0014 % yunits - this is used to label the y-axis on plots. 0015 % version - version of the constructor code 0016 % created - creation time of this fsdata object. 0017 % 0018 % Possible constructors: 0019 % c = cdata() - creates a blank data object 0020 % c = cdata(pl) - creates a data object with the given 0021 % parameter list which contains 'N' and 'Val' 0022 % c = cdata(vals) - creates a data object with the given 0023 % data values. 0024 % c = cdata(N,v) - creates a data object with N samples all of 0025 % value, v. 0026 % 0027 % HISTORY: 30-01-2007 Hewitson 0028 % Creation 0029 % 0030 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0031 0032 VERSION = '$Id: cdata.m,v 1.13 2007/08/31 17:40:08 hewitson Exp $'; 0033 0034 %%%%%%%%%%%%%%%%%%%%%%%% define cdata properties %%%%%%%%%%%%%%%%%%%%%%%%% 0035 0036 function c = init() 0037 c.name = 'None'; 0038 c.vals = []; 0039 c.tags = {}; 0040 c.xunits = 'N/A'; 0041 c.yunits = 'N/A'; 0042 c.version = VERSION; 0043 c.created = time; 0044 c = class(c, 'cdata'); 0045 end 0046 0047 %%%%%%%%%%%%%%%%%%%%%%%%%% Create cdata object %%%%%%%%%%%%%%%%%%%%%%%%%%% 0048 0049 %%%%%%%%%% val = cdata() %%%%%%%%%% 0050 % create default cdata object 0051 if nargin == 0 0052 c = init(); 0053 0054 elseif nargin == 1 0055 0056 %%%%%%%%%% Create from XML fragment %%%%%%%%%%% 0057 if isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl') 0058 c = fromxml(varargin{1}); 0059 %%%%%%%%%%% From File %%%%%%%%%%%%%%%% 0060 elseif ischar(varargin{1}) 0061 0062 filename = varargin{1}; 0063 [path, name, ext, vers] = fileparts(filename); 0064 switch ext 0065 case '.mat' 0066 c = load(filename); 0067 case '.xml' 0068 c = xmlparse(cdata, filename); 0069 otherwise 0070 error('### Unknown file type.'); 0071 end 0072 %%%%%%%%%% val = cdata(cdata) %%%%%%%%%% 0073 elseif isa(varargin{1}, 'cdata') 0074 c = varargin{1}; 0075 0076 %%%%%%%%%% val = cdata(struct) %%%%%%%%%% 0077 elseif isstruct(varargin{1}) 0078 0079 c = init(); 0080 0081 fields = fieldnames(varargin{1}); 0082 for ii = 1:length(fields) 0083 field = fields{ii}; 0084 try 0085 c.(field) = varargin{1}.(field); 0086 catch 0087 error('### The field ''%s'' in the struct is not a cdata property.', field) 0088 end 0089 end 0090 0091 %%%%%%%%%% val = cdata(plist) %%%%%%%%%% 0092 elseif isa(varargin{1}, 'plist') 0093 0094 c = init(); 0095 0096 % get possible parameters 0097 fcn = find(varargin{1}, 'fcn'); 0098 vals = find(varargin{1}, 'vals'); 0099 0100 % check which to use 0101 if ~isempty(fcn) 0102 % do function constructor 0103 vals = eval(fcn); 0104 elseif ~isempty(vals) 0105 % do vals constructor 0106 %- nothing to do here. 0107 else 0108 error('### unknown constructor method for cdata.'); 0109 end 0110 0111 c.name = fcn; 0112 c.vals = vals; 0113 0114 %%%%%%%%%% val = cdata(vals) %%%%%%%%%% 0115 else 0116 0117 c = init(); 0118 c.name = 'Data'; 0119 c.vals = varargin{1}; 0120 0121 end 0122 0123 0124 %%%%%%%%%% val = cdata(N,val) %%%%%%%%%% 0125 elseif nargin == 2 0126 0127 %%%%%%%%%%% From DATABASE 0128 if isa(varargin{1}, 'database') 0129 c = retrieve(varargin{1}, varargin{2:end}); 0130 else 0131 c = init(); 0132 c.name = 'Constant'; 0133 c.vals = ones(varargin{1},1)*varargin{2}; 0134 end 0135 else 0136 error('### Unknown number of constructor arguments.'); 0137 end 0138 0139 % check data 0140 % c = checkCdata(c); 0141 end 0142 0143 0144 %-------------------------------------------------------------------------- 0145 % check vector has right dimensions 0146 function c = checkCdata(c) 0147 0148 x = c.vals; 0149 if size(x, 1) < size(x, 2) 0150 x = x.'; 0151 end 0152 0153 c = set(c, 'vals', x); 0154 end 0155