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