0001 function xy = xydata(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 VERSION = '$Id: xydata.m,v 1.17 2008/03/17 09:16:37 mauro Exp $';
0031 CATEGORY = 'Constructor';
0032
0033
0034 if nargin == 2 && ischar(varargin{2})
0035 if strcmp(varargin{2}, 'Params')
0036 xy = plist();
0037 return
0038 elseif strcmp(varargin{2}, 'Version')
0039 xy = VERSION;
0040 return
0041 elseif strcmp(varargin{2}, 'Category')
0042 xy = CATEGORY;
0043 return
0044 end
0045 end
0046
0047
0048
0049 function xy = init(version)
0050 xy.name = 'None';
0051 xy.x = [];
0052 xy.y = [];
0053 xy.xunits = '';
0054 xy.yunits = '';
0055 xy.version = version;
0056 xy.created = time;
0057 xy = class(xy, 'xydata');
0058 end
0059
0060
0061
0062
0063
0064 if nargin == 0
0065 xy = init(VERSION);
0066
0067 elseif nargin == 1
0068
0069
0070 if ischar(varargin{1})
0071
0072 filename = varargin{1};
0073 [path, name, ext, vers] = fileparts(filename);
0074 switch ext
0075 case '.mat'
0076 xy = load(filename);
0077 xy = xy.a;
0078 case '.xml'
0079 root_node = xmlread(filename);
0080 xy = ltpda_xmlread(root_node, 'xydata');
0081 otherwise
0082 error('### Unknown file type.');
0083 end
0084
0085 elseif isa(varargin{1}, 'xydata')
0086 xy = varargin{1};
0087
0088
0089 elseif isstruct(varargin{1})
0090
0091 xy = init(VERSION);
0092
0093 fields = fieldnames(varargin{1});
0094 for ii = 1:length(fields)
0095 field = fields{ii};
0096
0097
0098 if strcmp(field, 'created')
0099 created = varargin{1}.created;
0100 if isstruct(created)
0101 created = time(created);
0102 end
0103 xy.created = created;
0104
0105 else
0106 try
0107 xy.(field) = varargin{1}.(field);
0108 catch
0109 error('### The field ''%s'' in the struct is not a xydata property.', field)
0110 end
0111 end
0112 end
0113
0114
0115 elseif isnumeric(varargin{1}) && length(varargin{1}) > 1
0116 xy = init(VERSION);
0117 xy.x = 1:length(varargin{1});
0118 xy.y = varargin{1};
0119
0120
0121 elseif isa(varargin{1}, 'plist')
0122
0123 if nparams(varargin{1}) == 0
0124 xy = init(VERSION);
0125 else
0126 error('### Unknown xydata constructor method.');
0127 end
0128
0129 else
0130 error('### Unknown xydata constructor method.');
0131 end
0132
0133
0134 elseif nargin == 2
0135
0136
0137 if isa(varargin{1}, 'database')
0138 xy = retrieve(varargin{1}, varargin{2:end});
0139 return
0140 else
0141 xy = init(VERSION);
0142 xy.x = varargin{1};
0143 xy.y = varargin{2};
0144 end
0145 else
0146 error('### Unknown number of constructor arguments.');
0147 end
0148
0149
0150
0151 if size(xy.y,2) > size(xy.y,1)
0152 xy.y = [xy.y].';
0153 end
0154 xy.x = reshape(xy.x, size(xy.y));
0155
0156
0157 end
0158
0159