⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 som_unit_neighs.m

📁 竞争学习的matlab工具箱
💻 M
字号:
function Ne1 = som_unit_neighs(topol,lattice,shape)%SOM_UNIT_NEIGHS Matrix indicating units in 1-neighborhood for each map unit.%% Ne1 = som_unit_neighs(topol,[lattice],[shape])% %  Ne1 = som_unit_neighs(sTopol);%  Ne1 = som_unit_neighs(sMap.topol);%  Ne1 = som_unit_neighs([10 4], 'hexa', 'cyl');%  Ne1 = som_unit_neighs(msize, 'rect', 'toroid');%%  Input and output arguments ([]'s are optional): %   topol              topology of the SOM grid%             (struct) topology or map struct%             (vector) the 'msize' field of topology struct%   [lattice] (string) map lattice, 'rect' by default%   [shape]   (string) map shape, 'sheet' by default%%   Ne1       (matrix, size [munits munits]) a sparse matrix%                      indicating the map units in 1-neighborhood%                      by value 1 (note: the unit itself also has value 0)%% For more help, try 'type som_unit_neighs' or check out online documentation.% See also SOM_NEIGHBORHOOD, SOM_UNIT_DISTS, SOM_UNIT_COORDS, SOM_CONNECTION.%%%%%%%%%%%%% DETAILED DESCRIPTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% som_unit_neighs%% PURPOSE%% Find the adjacent (in 1-neighborhood) units for each map unit of a SOM% based on given topology.%% SYNTAX%%  Ne1 = som_unit_neighs(sMap);%  Ne1 = som_unit_neighs(sM.topol);%  Ne1 = som_unit_neighs(msize);%  Ne1 = som_unit_neighs(msize,'hexa');%  Ne1 = som_unit_neighs(msize,'rect','toroid');%% DESCRIPTION%% For each map unit, find the units the distance of which from % the map unit is equal to 1. The distances are calculated% along the map grid. Consider, for example, the case of a 4x3 map. % The unit ('1' to 'C') positions for 'rect' and 'hexa' lattice (and% 'sheet' shape) are depicted below: % %   'rect' lattice           'hexa' lattice%   --------------           --------------%      1  5  9                  1  5  9%      2  6  a                   2  6  a%      3  7  b                  3  7  b%      4  8  c                   4  8  c%% The units in 1-neighborhood (adjacent units) for unit '6' are '2','5','7'% and 'a' in the 'rect' case and '5','2','7','9','a' and 'b' in the 'hexa'% case. The function returns a sparse matrix having value 1 for these units.  % Notice that not all units have equal number of neighbors. Unit '1' has only % units '2' and '5' in its 1-neighborhood. % % REQUIRED INPUT ARGUMENTS% %  topol          Map grid dimensions.%        (struct) topology struct or map struct, the topology %                 (msize, lattice, shape) of the map is taken from %                 the appropriate fields (see e.g. SOM_SET)%        (vector) the vector which gives the size of the map grid%                 (msize-field of the topology struct).%  % OPTIONAL INPUT ARGUMENTS % %  lattice (string) The map lattice, either 'rect' or 'hexa'. Default%                   is 'rect'. 'hexa' can only be used with 1- or %                   2-dimensional map grids.%  shape   (string) The map shape, either 'sheet', 'cyl' or 'toroid'. %                   Default is 'sheet'. %% OUTPUT ARGUMENTS%%  Ne1   (matrix) sparse matrix indicating units in 1-neighborhood%                 by 1, all others have value 0 (including the unit itself!),%                 size is [munits munits]%% EXAMPLES%% Simplest case:%  Ne1 = som_unit_neighs(sTopol);%  Ne1 = som_unit_neighs(sMap.topol);%  Ne1 = som_unit_neighs(msize);%  Ne1 = som_unit_neighs([10 10]);%% If topology is given as vector, lattice is 'rect' and shape is 'sheet'% by default. To change these, you can use the optional arguments:%  Ne1 = som_unit_neighs(msize, 'hexa', 'toroid');%% The neighbors can also be calculated for high-dimensional grids:%  Ne1 = som_unit_neighs([4 4 4 4 4 4]);%% SEE ALSO% %  som_neighborhood  Calculate N-neighborhoods of map units.%  som_unit_coords   Calculate grid coordinates.%  som_unit_dists    Calculate interunit distances.%  som_connection    Connection matrix.% Copyright (c) 1997-2000 by the SOM toolbox programming team.% http://www.cis.hut.fi/projects/somtoolbox/% Version 1.0beta juuso 141097% Version 2.0beta juuso 101199%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Check arguments error(nargchk(1, 3, nargin));% default valuessTopol = som_set('som_topol','lattice','rect');% topolif isstruct(topol),   switch topol.type,   case 'som_map', sTopol = topol.topol;  case 'som_topol', sTopol = topol;  endelseif iscell(topol),   for i=1:length(topol),     if isnumeric(topol{i}), sTopol.msize = topol{i};     elseif ischar(topol{i}),        switch topol{i},       case {'rect','hexa'}, sTopol.lattice = topol{i};       case {'sheet','cyl','toroid'}, sTopol.shape = topol{i};       end    end  endelse  sTopol.msize = topol;endif prod(sTopol.msize)==0, error('Map size is 0.'); end% latticeif nargin>1 & ~isempty(lattice) & ~isnan(lattice), sTopol.lattice = lattice; end% shape if nargin>2 & ~isempty(shape) & ~isnan(shape), sTopol.shape = shape; end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Action% distances between each map unitUd = som_unit_dists(sTopol);% 1-neighborhood are those units the distance of which is equal to 1munits = prod(sTopol.msize);Ne1 = sparse(zeros(munits));for i=1:munits,   inds = find(Ud(i,:)<1.01 & Ud(i,:)>0); % allow for rounding error  Ne1(i,inds) = 1;end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -