diff toolboxes/MIRtoolbox1.3.2/somtoolbox/som_table_modify.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_table_modify.m	Tue Feb 10 15:05:51 2015 +0000
@@ -0,0 +1,91 @@
+function sT = som_table_modify(sT,action,arg1,arg2,arg3)
+
+%SOM_TABLE_MODIFY Modify table: add or remove columns or rows.
+%  
+% sTable = som_table_modify(sTable,action,arg1,[arg2],[arg3])
+% 
+%  Input and output arguments ([]'s are optional): 
+%   sTable      (struct) table struct
+%   action      (string) action id (see below).
+%   arg1        (varies) Depending on action, 1 to 3 arguments
+%   [arg2]      (varies) are needed. See below.
+%   [arg3]      (varies) 
+%
+%   sTable      (struct) the modified table struct
+%
+%  Actions and their arguments:
+%   'addcol'    Add one or several new columns.
+%               arg1 (cell array) new values
+%                    (char)       new values (a single column can be given)
+%                    (matrix)     new values
+%               arg2 (cell array) new headers
+%               arg3 (scalar)     at which position the new columns 
+%                                 should be inserted (at the end by default)
+%   'addrow'    Add one or several new rows.
+%               arg1 (cell array) new values
+%                    (char)       new values (a single row can be given)
+%                    (matrix)     new values
+%               arg2 (scalar)     at which position the new rows 
+%                                 should be inserted (at the end by default)
+%   'removecol' Remove one or several columns.           
+%               arg1 (vector)     indeces of columns to be removed
+%   'removerow' Remove one or several rows.           
+%               arg1 (vector)     indeces of rows to be removed
+% 
+% See also  SOM_TABLE_STRUCT, SOM_TABLE_PRINT.
+
+% Contributed to SOM Toolbox 2.0, January 4th, 2002 by Juha Vesanto
+% Copyright (c) by Juha Vesanto
+% http://www.cis.hut.fi/projects/somtoolbox/
+
+% Version 2.0beta juuso 040102
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+[nrT,ncT] = size(sT.values); 
+
+switch action, 
+ case 'addcol', 
+  values = arg1; 
+  if ischar(values), values = cellstr(values); end
+  if isnumeric(values), values = num2cell(values); end
+  spans  = ones([size(values) 2]);
+  [nr,nc] = size(values); 
+  if nargin<4, header = cell(1,nc); header(:) = {''}; else header = arg2; end
+  if ischar(header), header = cellstr(header); end
+  if nargin<5, where = ncT+1; else  where  = arg3; end
+  if nrT ~= nr, 
+    error('Mismatch between sizes of given table and additional columns')
+  else
+    sT.headers = [sT.headers(:,1:where-1), header, sT.headers(:,where:end)]; 
+    sT.values  = [sT.values(:,1:where-1), values, sT.values(:,where:end)]; 
+    sT.span    = [sT.span(:,1:where-1,:), spans, sT.span(:,where:end,:)]; 
+  end
+ case 'addrow', 
+  values  = arg1; 
+  if ischar(values), values = cellstr(values); end
+  if isnumeric(values), values = num2cell(values); end
+  [nr,nc] = size(values); 
+  spans   = ones([size(values) 2]);
+  if nargin<4, where = nrT+1; else where  = arg2; end
+  if ncT ~= nc, 
+    error('Mismatch between sizes of given table and additional rows')
+  else
+    sT.values = [sT.values(1:where-1,:); values; sT.values(where:end,:)]; 
+    sT.span   = [sT.span(1:where-1,:,:); spans; sT.span(where:end,:,:)]; 
+  end
+ case 'removecol',
+  where      = setdiff(1:ncT,arg1);     
+  sT.values  = sT.values(:,where); 
+  sT.headers = sT.headers(:,where); 
+  sT.span    = sT.span(:,where,:); 
+ case 'removerow',
+  where      = setdiff(1:nrT,arg1);     
+  sT.values  = sT.values(where,:); 
+  sT.headers = sT.headers(where,:); 
+  sT.span    = sT.span(where,:,:); 
+end
+
+return;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%