Mercurial > hg > ltpda
diff m-toolbox/classes/@ao/csvGenerateData.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/classes/@ao/csvGenerateData.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,186 @@ +% CSVGENERATEDATA Default method to convert a ltpda_uoh-object into csv data. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% FUNCTION: csvGenerateData +% +% DESCRIPTION: +% +% CALL: [data, pl] = csvGenerateData(ltpda_uoh) +% +% INPUTS: ltpda_uoh: Input objects +% +% OUTPUTS: data: Cell array with the data which should should be +% written to the file. +% pl: Parameter list which contains the description of the +% data. The parameter list must contain the following +% keys: +% 'DESCRIPTION': Description for the file +% 'COLUMNS': Meaning of each column seperated by a +% comma. For additional information add +% this name as a key and a description as +% the value. For example: +% | key | value +% ----------------------- +% |COLUMNS| 'X1, X2' +% | X1 | 'x-axis data' +% | X2 | 'y-axis data' +% +% 'NROWS': Bumber of rows +% 'NCOLS': Number of columns +% 'OBJECT IDS': UUID of the objects seperated by a comma +% 'OBJECT NEAMES': Object names seperated by a comma +% 'CREATOR': Creator of the objects +% +% VERSION: $Id: csvGenerateData.m,v 1.2 2010/12/17 15:33:57 hewitson Exp $ +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +function [data, pl] = csvGenerateData(objs) + + description = ''; + columns = ''; + uuids = ''; + names = ''; + creators = {}; + creatorStr = ''; + data = {}; + pl = getDefaultPlist(); + + for nn = 1:numel(objs) + + %%%%%%%%%%%%%%%%%%%%%% Define header information %%%%%%%%%%%%%%%%%%%%%% + if isempty(description) + description = objs(nn).description; + else + description = sprintf('%s | %s', description, strrep(objs(nn).description, '|', '')); + end + if isempty(uuids) + uuids = objs(nn).UUID; + else + uuids = sprintf('%s, %s', uuids, objs(nn).UUID); + end + if isempty(names) + names = objs(nn).name; + else + names = sprintf('%s, %s', names, strrep(objs(nn).name, ',', '')); + end + creator = objs(nn).creator('all'); + creators = [creators, creator]; + + %%%%%%%%%%%%%%%%%%%%%% Generate data information %%%%%%%%%%%%%%%%%%%%%% + + x = objs(nn).x; + y = objs(nn).y; + dx = objs(nn).dx; + dy = objs(nn).dy; + + if isreal(x) && isreal(y) + %%%%%%%%%% real Data %%%%%%%%%% + + + if ~isa(objs(nn).data, 'cdata') + [columns, pl] = prepareDataDesc(columns, pl, sprintf('X%d',nn), 'x-data'); + end + [columns, pl] = prepareDataDesc(columns, pl, sprintf('Y%d',nn), 'y-data'); + data = [data x y]; + + %%% Add error if it exists + if ~isempty(dx) || ~isempty(dy) + if ~isa(objs(nn).data, 'cdata') + [columns, pl] = prepareDataDesc(columns, pl, sprintf('DX%d',nn), 'error of the x-data'); + end + [columns, pl] = prepareDataDesc(columns, pl, sprintf('DY%d',nn), 'error of the y-data'); + data = [data dx dy]; + end + + else + %%%%%%%%%% complex Data %%%%%%%%%% + + if ~isa(objs(nn).data, 'cdata') + [columns, pl] = prepareDataDesc(columns, pl, sprintf('real(X%d)',nn), 'real part of the x-data'); + end + if ~isa(objs(nn).data, 'cdata') + [columns, pl] = prepareDataDesc(columns, pl, sprintf('imag(X%d)',nn), 'imaginary part of the x-data'); + end + [columns, pl] = prepareDataDesc(columns, pl, sprintf('real(Y%d)',nn), 'real part of the y-data'); + [columns, pl] = prepareDataDesc(columns, pl, sprintf('imag(Y%d)',nn), 'imaginary part of the y-data'); + data = [data real(x) imag(x) real(y) imag(y)]; + + %%% Add error if it exists + if ~isempty(dx) || ~isempty(dy) + if ~isa(objs(nn).data, 'cdata') + [columns, pl] = prepareDataDesc(columns, pl, sprintf('real(DX%d)',nn), 'real part of the error of x'); + end + if ~isa(objs(nn).data, 'cdata') + [columns, pl] = prepareDataDesc(columns, pl, sprintf('imag(DX%d)',nn), 'imaginary part of the error of x'); + end + [columns, pl] = prepareDataDesc(columns, pl, sprintf('real(DY%d)',nn), 'real part of the error of y'); + [columns, pl] = prepareDataDesc(columns, pl, sprintf('imag(DY%d)',nn), 'imaginary part of the error of y'); + data = [data real(dx) imag(dx) real(y) imag(y)]; + end + + end + + end + + nrows = max(cellfun(@length, data)); + ncols = numel(data); + if ~isempty(columns) + columns = columns(3:end); + end + creators = unique(creators); + for ii = 1:numel(creators) + if isempty(creatorStr) + creatorStr = creators{ii}; + else + creatorStr = sprintf('%s, %s', creatorStr, creators{ii}); + end + end + + pl.pset('DESCRIPTION', description); + pl.pset('COLUMNS', columns); + pl.pset('NROWS', nrows); + pl.pset('NCOLS', ncols); + pl.pset('OBJECT IDS', uuids); + pl.pset('OBJECT NAMES', names); + pl.pset('CREATOR', creatorStr); + + + + + % error('### If it is necessary to export a %-object then add a change request to MANTIS. https://ed.fbk.eu/ltpda/mantis/login_page.php', class(objs)); + +end + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% FUNCTION: getDefaultPlist +% +% DESCRIPTION: Get Default Plist +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +function plout = getDefaultPlist() + persistent pl; + if exist('pl', 'var')==0 || isempty(pl) + pl = buildplist(); + end + plout = pl; +end + +function plo = buildplist() + plo = plist(... + 'DESCRIPTION', '', ... + 'COLUMNS', '', ... + 'NROWS', -1, ... + 'NCOLS', -1, ... + 'OBJECT IDS', '', ... + 'OBJECT NEAMES', '', ... + 'CREATOR', ''); +end + +function [columns, pl] = prepareDataDesc(columns, pl, colName, colDesc) + columns = sprintf('%s, %s', columns, colName); + pl.append(colName, colDesc); +end +