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

📄 som_select.m

📁 it is matlab code , som(slef organizing map) tool for matlab
💻 M
📖 第 1 页 / 共 2 页
字号:
  set(0,'CurrentFigure',data.fig_h);  hold on;  tmp=fill(rep_x,rep_y,0.8);  for i=1:n    set(tmp(i),...        'EdgeColor',[0 0 0],...        'FaceColor',colors(i,:),...        'ButtonDownFcn','som_select([],0,''choose'');');  end  axis('equal');  axis('on');  set(gca,'XTick',1:n,'XTickLabel',names,'XAxisLocation','top');  set(data.a_h,'YLim',[-0.5,0.5],...	       'XLim',[0.5 n+0.5],...	       'YTickLabel','');  set(data.fig_h,'UserData',data);elseif strcmp(varargin{3},'choose')    udata=get(gcf,'UserData');  if strcmp(get(gcbo,'Selected'),'off')    old=findobj(get(gca,'Children'),'Type','patch');    set(old,'Selected','off');    set(gcbo,'Selected','on');    udata.curr_col=udata.colors(round(mean(get(gcbo,'XData'))),:);    udata.class=mean(get(gcbo,'XData'));  else    set(gcbo,'Selected','off');    udata.curr_col=NaN;    udata.class=0;  end  set(gcf,'UserData',udata);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function data=som_select_gui()a = figure('Color',[0.8 0.8 0.8], ...	'PaperType','a4letter', ...	'Position',[586 584 560 210], ...	'Tag','SELECT_GUI');data.fig_h=a;b = axes('Parent',a, ...	'Box','on', ...	'CameraUpVector',[0 1 0], ...	'Color',[1 1 1], ...	'DataAspectRatioMode','manual', ...	'PlotBoxAspectRatio',[20 1 2], ...	'PlotBoxAspectRatioMode','manual', ...	'Position',[0.13 0.11 0.775 0.815], ...	'Tag','Axes1', ...	'WarpToFill','off', ...	'XColor',[0 0 0], ...	'XLimMode','manual', ...	'YColor',[0 0 0], ...	'YLimMode','manual', ...	'YTickLabelMode','manual', ...	'ZColor',[0 0 0]);data.a_h=b;b = uicontrol('Parent',a, ...	'Units','points', ...	'BackgroundColor',[0.701961 0.701961 0.701961], ...	'Callback','som_select([],[],''close'')', ...	'FontWeight','demi', ...	'Position',[150 12 50 20], ...	'String','CLOSE', ...	'Tag','Pushbutton1');b = uicontrol('Parent',a, ...	'Units','points', ...	'BackgroundColor',[0.701961 0.701961 0.701961], ...        'Callback','som_select([],0,''ret_mat'')',...	'FontWeight','demi', ...	'Position',[365 12 50 20], ...	'String','OK', ...	'Tag','Pushbutton2');b = uicontrol('Parent',a, ...	'Units','points', ...	'BackgroundColor',[0.701961 0.701961 0.701961], ...        'Callback','som_select([],0,''clear'')',...	'FontWeight','demi', ...	'Position',[257.5 12 50 20], ...	'String','CLEAR', ...	'Tag','Pushbutton3');b = uicontrol('Parent',a, ...        'Units','points', ...        'Position',[50 27 17 16], ...        'Callback','som_select([],[],''rb'')',...        'Style','radiobutton', ...        'Tag','Radiobutton1', ...        'Value',1);b = uicontrol('Parent',a, ...        'Units','points', ...        'BackgroundColor',[0.701961 0.701961 0.701961], ...        'Callback','som_select([],[],''rb'')',...        'Position',[50 7 17 16], ...        'Style','radiobutton', ...        'Tag','Radiobutton2');b = uicontrol('Parent',a, ...        'Units','points', ...        'BackgroundColor',[0.8 0.8 0.8], ...        'FontSize',9, ...        'FontWeight','demi', ...        'HorizontalAlignment','left', ...        'Position',[72 25 28 15], ...        'String','Select', ...        'Style','text', ...        'Tag','StaticText1');b = uicontrol('Parent',a, ...        'Units','points', ...        'BackgroundColor',[0.8 0.8 0.8], ...        'FontSize',9, ...        'FontWeight','demi', ...        'HorizontalAlignment','left', ...        'Position',[72 7 25 13.6], ...        'String','Clear', ...        'Style','text', ...        'Tag','StaticText2');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function close_guiudata=get(get(gcbo,'Parent'),'UserData');if strcmp(udata.type,'planePlot');  set(udata.plane_h,'ButtonDownFcn','','UserData',[]);  set(get(udata.plane_h,'Parent'),'ButtonDownFcn','');  delete(udata.patch_h);  return;end  h=findobj(get(udata.plane_h,'Children'),'Tag','SEL_PATCH');set(udata.patch_h,'ButtonDownFcn','','UserData',[]);delete(h);close(udata.fig_h);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function draw_polyudata=get(findobj(get(0,'Children'),'Tag','SELECT_GUI'),'UserData');if isempty(udata.coords) & strcmp(get(gcf,'SelectionType'),'alt')  return;endcoords(1,1) = getfield(get(gca,'CurrentPoint'),{3});coords(1,2) = getfield(get(gca,'CurrentPoint'),{1});udata.coords = cat(1,udata.coords,coords);delete(udata.poly_h);subplot(udata.plane_h);hold on;switch get(gcf,'SelectionType'); case 'normal'  udata.poly_h=plot(udata.coords(:,2),udata.coords(:,1),'black',...		    'ButtonDownFcn','som_select([],[],''click'')',...		    'LineWidth',2);  set(udata.fig_h,'UserData',udata); case 'alt'  udata.coords=cat(1,udata.coords,udata.coords(1,:));  udata.poly_h=plot(udata.coords(:,2),udata.coords(:,1),'black',...		    'LineWidth',2);  delete(udata.poly_h);  if ~isnan(udata.curr_col)    tmp=sort(repmat((1:udata.msize(1))',udata.msize(2),1));    tmp(:,2)=repmat((1:udata.msize(2))',udata.msize(1),1);    tmp2=tmp;    if strcmp(udata.type,'planePlot')      in=find(inpolygon(tmp(:,2),tmp(:,1),...			udata.coords(:,2),udata.coords(:,1)));      row=tmp2(in,1);      col=tmp2(in,2);      in=sub2ind(udata.msize,row,col);      colors=reshape(get(udata.patch_h,'FaceVertexCData'),...		     [prod(udata.msize) 3]);      if ~isnan(udata.curr_col) & ~strcmp(udata.mode,'clear')        colors(in,:)=ones(length(in),1)*udata.curr_col;        udata.mat(row,col)=udata.class;      elseif strcmp(udata.mode,'clear')        colors(in,:)=[NaN NaN NaN];        udata.mat(row,col)=0;      end      udata.poly_h=[];      udata.coords=[];      set(udata.patch_h,'FaceVertexCData',colors);      set(udata.fig_h,'UserData',udata);      return;    end    if strcmp(udata.lattice,'hexa');      t=find(~rem(tmp(:,1),2));      tmp(t,2)=tmp(t,2)+0.5;      if any(strcmp(get(udata.patch_h,'Tag'),{'planeC','planeU'}))        p=0.7*vis_patch('hexa');      else        [x,y]=pol2cart(0:0.1:2*pi,0.5);        p=[x';0.5]*0.7;        p(:,2)=[y';0]*0.7;      end    else      if any(strcmp(get(udata.patch_h,'Tag'),{'planeC','planeU'}))        p=0.7*vis_patch('rect');      else        [x,y]=pol2cart(0:0.1:2*pi,0.5);        p=[x';0.5]*0.7;        p(:,2)=[y';0]*0.7;      end     end    in=find(inpolygon(tmp(:,2),tmp(:,1),udata.coords(:,2),udata.coords(:,1)));    set(udata.fig_h,'UserData',udata);    if strcmp(udata.mode,'select')      remove_selpatches;      udata=get(udata.fig_h,'UserData');      for i=1:length(in)	udat.patch_h=udata.patch_h;	h=patch(p(:,1)+tmp(in(i),2),p(:,2)+tmp(in(i),1),...		udata.curr_col,...		'EdgeColor','black',...		'ButtonDownFcn','som_select([],[],''click'')', ...		'Tag','SEL_PATCH',...		'UserData',udat);	udata.mat(tmp2(in(i),1),tmp2(in(i),2))=udata.class;      end    else      remove_selpatches;      udata=get(udata.fig_h,'UserData');      %h=findobj(get(udata.plane_h,'Children'),'Tag','SEL_PATCH');      %for i=1:length(h)      %    if all(get(h(i),'FaceColor')==udata.curr_col) & ...      %       inpolygon(mean(get(h(i),'XData')),mean(get(h(i),'YData')),...      %       udata.coords(:,2),udata.coords(:,1))      %       coords=[floor(mean(get(h(i),'YData')))...      %               floor(mean(get(h(i),'XData')))];      %       udata.mat(coords(1),coords(2))=0;      %      delete(h(i));      %    end      %end    end  end  udata.poly_h=[];  udata.coords=[];  set(udata.fig_h,'UserData',udata);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function remove_selpatchesudata=get(findobj(get(0,'Children'),'Tag','SELECT_GUI'),'UserData');h=findobj(get(udata.plane_h,'Children'),'Tag','SEL_PATCH');for i=1:length(h)  if inpolygon(mean(get(h(i),'XData')),mean(get(h(i),'YData')),...               udata.coords(:,2),udata.coords(:,1));    coords=[floor(mean(get(h(i),'YData')))...                       floor(mean(get(h(i),'XData')))];    udata.mat(coords(1),coords(2))=0;    delete(h(i));  endendset(udata.fig_h,'UserData',udata);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function [n,names,classes]=class2num(class)names = {};classes = zeros(length(class),1);for i=1:length(class)  if ~isempty(class{i}),     a = find(strcmp(class{i},names));    if isempty(a),       names=cat(1,names,class(i));      classes(i) = length(names);    else      classes(i) = a;    end  endendn=length(names);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function h=find_patch(a_h)h=[];tags={'planeC','planeU','planePie','planeBar','planePlot'};for i=1:5  if ~isempty(findobj(get(a_h,'Children'),'Tag',tags{i}))    h=findobj(get(gca,'Children'),'Tag',tags{i});    if length(h) > 1      h=h(1);    end    return;  endend  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function draw_classesudata=get(findobj(get(0,'Children'),'Tag','SELECT_GUI'), ...	  'UserData');figure(get(udata.plane_h,'Parent'))subplot(udata.plane_h);colors=zeros(prod(udata.msize),3)+NaN;c_map=jet(length(udata.c_names));inds = find(udata.mat);for i=1:length(inds),   colors(inds(i),:) = c_map(udata.mat(inds(i)),:);endif strcmp(udata.type,'planePlot'),  set(udata.patch_h,'FaceVertexCData',colors);  set(udata.fig_h,'UserData',udata);else  hold on  co = som_vis_coords(udata.lattice,udata.msize);  if any(strcmp(get(udata.patch_h,'Tag'),{'planeC','planeU'}))    p=0.7*vis_patch(udata.lattice);  else    [x,y]=pol2cart(0:0.1:2*pi,0.5);    p=[x';0.5]*0.7;    p(:,2)=[y';0]*0.7;  end  for i=1:length(inds),    udat.patch_h=udata.patch_h;    h=patch(p(:,1)+co(inds(i),1),p(:,2)+co(inds(i),2),...	    colors(inds(i),:),...	    'EdgeColor','black',...	    'ButtonDownFcn','som_select([],[],''click'')', ...	    'Tag','SEL_PATCH',...	    'UserData',udat);  end   end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

⌨️ 快捷键说明

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