wolffd@0: function [Err,sPropTotal,sPropMunits,sPropComps] = som_distortion3(sM,D,rad) wolffd@0: wolffd@0: %SOM_DISTORTION3 Map distortion measures. wolffd@0: % wolffd@0: % [sE,Err] = som_distortion3(sM,[D],[rad]); wolffd@0: % wolffd@0: % sE = som_distortion3(sM); wolffd@0: % wolffd@0: % Input and output arguments ([]'s are optional): wolffd@0: % sM (struct) map struct wolffd@0: % [D] (matrix) a matrix, size dlen x dim wolffd@0: % (struct) data or map struct wolffd@0: % by default the map struct is used wolffd@0: % [rad] (scalar) neighborhood radius, looked from sM.trainhist wolffd@0: % by default, or = 1 if that has no valid values wolffd@0: % wolffd@0: % Err (matrix) size munits x dim x 3 wolffd@0: % distortion error elements (quantization error, wolffd@0: % neighborhood bias, and neighborhood variance) wolffd@0: % for each map unit and component wolffd@0: % sPropTotal (struct) .n = length of data wolffd@0: % .h = mean neighborhood function value wolffd@0: % .err = errors wolffd@0: % sPropMunits (struct) .Ni = hits per map unit wolffd@0: % .Hi = sum of neighborhood values for each map unit wolffd@0: % .Err = errors per map unit wolffd@0: % sPropComps (struct) .e1 = total squared distance to centroid wolffd@0: % .eq = total squared distance to BMU wolffd@0: % .Err = errors per component wolffd@0: % wolffd@0: % See also SOM_QUALITY. wolffd@0: wolffd@0: % Contributed to SOM Toolbox 2.0, January 3rd, 2002 by Juha Vesanto wolffd@0: % Copyright (c) by Juha Vesanto wolffd@0: % http://www.cis.hut.fi/projects/somtoolbox/ wolffd@0: wolffd@0: % Version 2.0beta juuso 030102 wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: %% arguments wolffd@0: wolffd@0: % map wolffd@0: [munits dim] = size(sM.codebook); wolffd@0: wolffd@0: % neighborhood radius wolffd@0: if nargin<3, wolffd@0: if ~isempty(sM.trainhist), wolffd@0: rad = sM.trainhist(end).radius_fin; wolffd@0: else wolffd@0: rad = 1; wolffd@0: end wolffd@0: end wolffd@0: if rad0); wolffd@0: v(i) = c(i)./nn(i); wolffd@0: wolffd@0: return; wolffd@0: wolffd@0: wolffd@0: function vis wolffd@0: wolffd@0: figure wolffd@0: som_show(sM,'color',{Hi,'Hi'},'color',{Ni,'hits'},... wolffd@0: 'color',{Ed,'distortion'},'color',{Eqx,'qxerror'},... wolffd@0: 'color',{Enb,'N-bias'},'color',{Env,'N-Var'}); wolffd@0: wolffd@0: ed = Eqx + Enb + Env; wolffd@0: i = find(ed>0); wolffd@0: eqx = 0*ed; eqx(i) = Eqx(i)./ed(i); wolffd@0: enb = 0*ed; enb(i) = Enb(i)./ed(i); wolffd@0: env = 0*ed; env(i) = Env(i)./ed(i); wolffd@0: wolffd@0: figure wolffd@0: som_show(sM,'color',Hi,'color',Ni,'color',Ed,... wolffd@0: 'color',eqx,'color',enb,'color',env); wolffd@0: wolffd@0: