Mercurial > hg > camir-aes2014
diff toolboxes/MIRtoolbox1.3.2/somtoolbox/som_data_struct.m @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolboxes/MIRtoolbox1.3.2/somtoolbox/som_data_struct.m Tue Feb 10 15:05:51 2015 +0000 @@ -0,0 +1,173 @@ +function sData = som_data_struct(D, varargin) + +%SOM_DATA_STRUCT Create a data struct. +% +% sData = som_data_struct(D, [argID, value, ...]) +% +% sData = som_data_struct(D); +% sData = som_data_struct(D,'name','my_data','labels',labs); +% +% Input and output arguments ([]'s are optional): +% D (matrix) data matrix, size dlen x dim +% [argID, (string) See below. These are given as argID, value pairs. +% value] (varies) +% +% sData (struct) created data struct +% +% Here are the argument IDs and corresponding values: +% 'labels' (string array / cellstr) labels for each data vector, +% length=dlen +% 'name' (string) data name +% 'comp_names' (string array / cellstr) component names, size dim x 1 +% 'comp_norm' (cell array) normalization operations for each +% component, size dim x 1. Each cell is either empty, +% or a cell array of normalization structs. +% +% For more help, try 'type som_data_struct' or check out online documentation. +% See also SOM_SET, SOM_INFO, SOM_MAP_STRUCT. + +%%%%%%%%%%%%% DETAILED DESCRIPTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% som_data_struct +% +% PURPOSE +% +% Creates a data structure. +% +% SYNTAX +% +% sD = som_data_struct(D); +% sD = som_data_struct(...,'argID',value,...); +% +% DESCRIPTION +% +% Creates a data struct. The struct contains, in addition to the data +% matrix, component names, normalization operations for the components, +% labels for each vector, and a name for the whole data set. All of these +% can be given in the optional arguments of the function. If left +% unspecified, they are given default values. +% +% Field Type Size / default value +% ------------------------------------------------------------------------ +% .type (string) 'som_data' +% .data (matrix) size dlen x dim +% .name (string) 'unnamed' +% .labels (cellstr) size dlen x m, {''; ''; ... ''} +% .comp_names (cellstr) size dim x 1, {'Variable1', 'Variable2', ...} +% .comp_norm (cell array) size dim x 1, {[], [], ... []} +% .label_names (cellstr) size m x 1, [] +% +% '.type' field is the struct identifier. Do not change it. +% '.data' field is the data matrix, each row is one data vector +% '.name' field is the identifier for the whole data struct +% '.labels' field contains the labels for each of the vectors. The ith +% of '.labels' contains the labels for ith data vector. Note that +% if some vectors have more labels than others, the others are +% are given empty labels ('') to pad the '.labels' array up. +% '.comp_names' field contains the names of the vector components +% '.comp_norm' field contains normalization information for each +% component. Each cell of '.comp_norm' is itself a cell array of +% normalization structs. If no normalizations are performed for +% the particular component, the cell is empty ([]). +% '.label_names' is similar to .comp_names field holding the names for +% each data label column +% +% REQUIRED INPUT ARGUMENTS +% +% D (matrix) The data matrix, size dlen x dim. The data matrix may +% contain unknown values, indicated by NaNs. +% +% OPTIONAL INPUT ARGUMENTS +% +% argID (string) Argument identifier string (see below). +% value (varies) Value for the argument (see below). +% +% The optional arguments can be given as 'argID',value -pairs as +% listed below. If an argument is given value multiple times, the +% last one is used. +% +% 'labels' (string array / cellstr) labels for each data vector, +% size dlen x m +% 'name' (string) data name +% 'comp_names' (string array / cellstr) component names, size dim x 1 +% 'comp_norm' (cell array) normalization operations for each +% component, size dim x 1. Each cell is either empty, +% or a cell array of normalization structs. +% 'label_names'(string array / cellstr) label names, size m x 1 +% +% OUTPUT ARGUMENTS +% +% sD (struct) the data struct +% +% EXAMPLES +% +% Simplest case: +% D = rand(8, 3); % 8 3-dimensional vectors +% sD = som_data_struct(D); +% +% With optional arguments, the other fields can be given values: +% labs = cell(8, 1); labs{1, 1} = 'first_label'; +% cnames = {'first'; 'second'; 'third'}; +% +% sD = som_data_struct(D,'labels',labs,'name','a data struct'); +% sD = som_data_struct(D,'comp_names',cnames); +% +% SEE ALSO +% +% som_set Set values and create SOM Toolbox structs. +% som_map_struct Create a map struct. + +% Copyright (c) 1997-2000 by the SOM toolbox programming team. +% http://www.cis.hut.fi/projects/somtoolbox/ + +% Version 1.0beta ecco 071197 +% Version 2.0beta juuso 101199 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% data +[dlen dim] = size(D); + +% default values +if ~isempty(inputname(1)), name = inputname(1); +else name = 'unnamed'; end +labels = cell(dlen,1); +labels(1:dlen) = {''}; +%for i=1:dlen, labels{i} = ''; end +comp_names = cell(dim,1); +for i = 1:dim, comp_names{i} = sprintf('Variable%d', i); end +comp_norm = cell(dim,1); +label_names = []; + +% varargin +i=1; +while i<=length(varargin), + argok = 1; + if ischar(varargin{i}), + switch varargin{i}, + % argument IDs + case 'comp_names', i=i+1; comp_names = varargin{i}; + case 'labels', i=i+1; labels = varargin{i}; + case 'name', i=i+1; name = varargin{i}; + case 'comp_norm', i=i+1; comp_norm = varargin{i}; + case 'label_names',i=i+1; label_names = varargin{i}; + otherwise argok=0; + end + else + argok = 0; + end + if ~argok, + disp(['(som_data_struct) Ignoring invalid argument #' num2str(i+1)]); + end + i = i+1; +end + +% create struct +sData = som_set('som_data','data',D,'labels',labels,... + 'name',name,'comp_names',comp_names,... + 'comp_norm',comp_norm,'label_names',label_names); + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +