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);
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+