Mercurial > hg > camir-aes2014
diff toolboxes/MIRtoolbox1.3.2/somtoolbox/som_bmucolor.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_bmucolor.m Tue Feb 10 15:05:51 2015 +0000 @@ -0,0 +1,93 @@ +function bmu_colors=som_bmucolor(bmus, m, colors); + +% SOM_BMUCOLOR Returns the colors of the bmus according to a map colorcode +% +% bmu_colors=som_bmucolor(bmus, msize, colors); +% +% INPUT ARGUMENTS ([]'s are optional) +% +% bmus (matrix) Nx1 vector of BMU indexes +% msize (map struct, topol struct or 1x2 vector) +% gives the map grid size +% colors (matrix) colormap(s): munits x 3 x d matrix of RGB vectors +% +% OUTPUT ARGUMENTS +% +% bmu_colors (Nx3xd matrix) color of the data point according to its BMU's +% color(s). +% +% Idea is to get a color for each data point that links it to its BMU. +% +% EXAMPLE +% +% We want to show how an time series is projected to a map. Instead of +% a trajectory, we use 'color linking' +% +% map=som_make(multi_dim_signal); +% bmus=som_bmu(map,multi_dim_signal); +% Colors=som_bmucolor(bmus, map, som_colorcode(map,'rgb1')); +% colorsignal(Colors, multi_dim_signal); +% +% See also SOM_COLORCODE. + +% Copyright (c) 1999-2000 by the SOM toolbox programming team. +% http://www.cis.hut.fi/projects/somtoolbox/ + +% Version 2.0alpha Johan 170699 + +%% Check arguments %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +error(nargchk(3, 3, nargin)) % check no. of input args is correct + +% Check map grid size + +if vis_valuetype(m,{'1x2'}), + msize=m; +else + [tmp,ok,tmp]=som_set(m); + if isstruct(m) & all(ok) % check m type + switch m.type + case 'som_topol' + msize=m.msize; + lattice=m.lattice; + case 'som_map' + msize=m.topol.msize; + lattice=m.topol.lattice; + otherwise + error('Invalid map or topol struct.'); + end + end +end + +if length(msize)>2 + error('Only 2D maps allowed!'); +end + +n=prod(msize) + +% Check colorcode size + +if ~vis_valuetype(colors,{'nx3xdimrgb','nx3rgb'}) + error('Colorcode matrix not valid!'); +end + +% Check bmu vector + +if ~vis_valuetype(bmus,{'nx1'}), + error('Need a column vector of BMU indexes!'); +else + bmus=round(bmus); + if max(bmus) > n | min(bmus) < 1 + error('BMU indexes exeed the map size!') + end +end + +%% Action %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +bmu_c=colors(bmus,:,:); + +%% Build output %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +bmu_colors=squeeze(bmu_c); +