Mercurial > hg > camir-aes2014
diff toolboxes/MIRtoolbox1.3.2/somtoolbox/vis_planeGetArgs.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/vis_planeGetArgs.m Tue Feb 10 15:05:51 2015 +0000 @@ -0,0 +1,107 @@ +function [nargin_,varargout]=vis_planeGetArgs(varargin) + +% VIS_PLANEGETARGS Subfunction for som_*plane: extracts topolopy +% information from the first arguments. +% +% [nargin,varargout]=vis_planeGetArgs(varargin) +% +% Input and output arguments: +% varargin (varies) arguments given to som_*plane function +% nargin_ (scalar) number of arguments that nargchk of som_*plane "should see" +% +number_of_varargins if varargin{1} is not map/topol struct +% +number_of_varargins+1 if varargin{2} is a map/topol struct +% varargout (varies) the arguments that som_*plane "should see" +% +% Basically, this function allows topology information to be given +% in various ways: either as a map/topology struct, or as a argument pair: +% lattice, msize. The topology is always converted into the (lattice, msize) +% argument pair. +% - if first input argument (varargin{1}) is a map or topol struct +% the function extracts lattice and msize fields to two first +% output variables after 'nargin_'. +% - otherwise it copies the input arguments to the output arguments +% after 'nargin_'. +% If there are too many inputs (as compared to number of outputs), the +% last ones are ignored. If too few, they are replaced by empty values +% in outputs. +% +% Example of usage: +% function definition: h = som_cplane(varargin) +% first code line: [nargin,lattice,msize,color,size,pos]=vis_planeGetArgs(varargin); +% +% See also SOM_CPLANE, SOM_BARPLANE, SOM_PLOTPLANE, SOM_PIEPLANE. + +% Copyright (c) 2000 by the SOM toolbox programming team. +% http://www.cis.hut.fi/projects/somtoolbox/ + +% Version 2.0beta Johan 240300 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +nout=nargout-1; + +% Set first all varargins to contain empty (==default values in som_*plane) + +for i=1:nout, varargout{i}=[]; end + +nargin_ = nargin; +% Struct: might be map or topol + +if isstruct(varargin{1}), + + % Get topol from topol field + if isfield(varargin{1},'topol'), topol=varargin{1}.topol; + else topol=varargin{1}; % assume that this is topol struct + end + + if ~isstruct(topol), + % topol not a struct !? + warning('Field ''topol'' is not a struct.'); + varargout{1}=varargin{1}; + varargoutC=2; + nargin_ = nargin; + elseif ~isfield(topol,'msize') | ~isfield(topol,'lattice'), + % Field missing?! + warning('Invalid topology struct.'); + varargout{1}=topol; + varargoutC=2; + nargin_ = nargin; + else + varargout{1}=topol.lattice; + varargout{2}=topol.msize; + % increment input arg. counter + varargoutC=3; + nargin_ = nargin+1; + end + +elseif iscell(varargin{1}), + + c = varargin{1}; + lattice = 'hexa'; shape = 'sheet'; msize = [1 1]; + for i=1:length(c), + if ischar(c{i}), + switch c{i}, + case {'hexa','hexaU','rect','rectU'}, lattice = c{i}; + case {'sheet','cyl','toroid'}, shape = c{i}; + end + else + msize = c{i}; + end + end + varargout{1} = lattice; + varargout{2} = msize; + varargoutC=3; + nargin_ = nargin+1; + +else + + % should be a lattice (string) + varargout{1}=varargin{1}; + varargoutC=2; + nargin_=nargin; + +end + +for i=2:nargin, varargout{varargoutC+i-2}=varargin{i}; end + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%