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

📄 sompak_rb_control.m

📁 it is matlab code , som(slef organizing map) tool for matlab
💻 M
字号:
function varargout=sompak_rb_control(str)%SOMPAK_RB_CONTROL  An auxiliary function for SOMPAK_*_GUI functions.%% This is an auxiliary function for SOMPAK_GUI, SOMPAK_INIT_GUI, % SOMPAK_SAMMON_GUI and SOMPAK_TRAIN_GUI functions. It controls the % radio buttons in the GUIs.%  % See also SOMPAK_GUI, SOMPAK_INIT_GUI, SOMPAK_SAMMON_GUI, SOMPAK_TRAIN_GUI.% Contributed to SOM Toolbox vs2, February 2nd, 2000 by Juha Parhankangas% Copyright (c) by Juha Parhankangas% http://www.cis.hut.fi/projects/somtoolbox/% Juha Parhankangas 050100data=get(gcf,'UserData');switch str  case {'rand','linear'}   h=cat(2,findobj(get(gcf,'Children'),'Tag','RANDOM'),...	   findobj(get(gcf,'Children'),'Tag','LINEAR'));   set(h,'Value',0);   set(gcbo,'Value',1);   data.inittype=str;  case {'bubble','gaussian'}   h=cat(2,findobj(get(gcf,'Children'),'Tag','BUBBLE'),...           findobj(get(gcf,'Children'),'Tag','GAUSSIAN'));   set(h,'Value',0);   set(gcbo,'Value',1);   data.neigh=str;  case {'hexa','rect'}   h=cat(2,findobj(get(gcf,'Children'),'Tag','HEXA'),...           findobj(get(gcf,'Children'),'Tag','RECT'));   set(h,'Value',0);   set(gcbo,'Value',1);   data.topol=str;  case {'out_ft'}   value=get(gcbo,'Value');   switch value     case 1      h=findobj(get(gcf,'Children'),'Tag','OUT_FILE');      data.out_file_type='';      set(h,'String','');     case 2      data.out_file_type='box';     case 3      data.out_file_type='pak';   end  case {'input_ft'}   value=get(gcbo,'Value');   switch value     case 1      data.input_file_type='';     case 2      data.input_file_type='box';     case 3      data.input_file_type='pak';   end  case {'map_ft'}   value=get(gcbo,'Value');   switch value     case 1      data.map_type='';     case 2      data.map_type='box';     case 3      data.map_type='pak';   end  case {'out_file'}   if isempty(data.out_file_type)     data.out_file='';     h=findobj(get(gcf,'Children'),'Tag','OUT_FILE');     set(h,'String','');   else     data.out_file=get(findobj(get(gcf,'Children'),'Tag','OUT_FILE'),'String');     if isempty(data.out_file)       h=findobj(get(gcf,'Children'),'Tag','OUT_FILE_TYPE');       set(h,'Value',1);     end   end  case {'out_var'}   h=findobj(get(gcf,'Children'),'Tag','OUT_VAR');   if ~isempty(get(h,'String'))     data.out_var=get(h,'String');   else     data.out_var=[];     set(h,'String','''ans''');   end  case {'xdim'}   h=findobj(get(gcf,'Children'),'Tag','XDIM');   data.xdim=str2num(get(h,'String'));  case {'ydim'}   h=findobj(get(gcf,'Children'),'Tag','YDIM');   data.ydim=str2num(get(h,'String'));  case {'radius'}   h=findobj(get(gcf,'Children'),'Tag','RADIUS');   data.radius=str2num(get(h,'String'));  case {'data'}   h=findobj(get(gcf,'Children'),'Tag','DATA');   data.data=get(h,'String');  case {'rlen'}   h=findobj(get(gcf,'Children'),'Tag','RLEN');   data.rlen=str2num(get(h,'String'));  case {'alpha'}   h=findobj(get(gcf,'Children'),'Tag','ALPHA');   data.alpha=str2num(get(h,'String'));  case {'map'}   h=findobj(get(gcf,'Children'),'Tag','MAP');   data.map=get(h,'String');  case 'init_ok'   if isempty(data.xdim) | ~is_positive_integer(data.xdim)     errordlg('Argument ''xdim'' must be positive integer.');     return;   end   if isempty(data.ydim) | ~is_positive_integer(data.ydim)     errordlg('Argument ''ydim'' must be positive integer.');     return;   end   if isempty(data.data)     errordlg('Argument ''Workspace data'' must be a string.');     return;   end   if isempty(data.input_file_type)     sData=evalin('base',data.data);   else      sData=data.data;   end   if isempty(data.out_file)     if ~isempty(data.out_file_type)       errordlg('Argument ''Output file'' is not defined.');       return;     end     data.out_file=[];   end   answer=sompak_init(sData,...                      data.input_file_type,...                      data.inittype,...                      data.out_file,...                      data.out_file_type,...                      data.xdim,...                      data.ydim,...                      data.topol,...                      data.neigh);   if any(strcmp(data.out_var,{'ans','''ans'''})) | isstr(answer)     varargout{1}=answer;    else     assignin('base',data.out_var,answer);     disp(sprintf('Map is set to workspace as ''%s''.',data.out_var));   end   close(findobj(get(0,'Children'),'Tag','InitGUI'));   return;  case 'train_ok'   if isempty(data.rlen) | ~is_positive_integer(data.rlen)     errordlg('Argument ''Running Length'' must be positive integer.');     return;   end   if isempty(data.alpha) | data.alpha <= 0     errordlg('Argument ''Initial Alpha Value'' must be a positive float.');     return;   end   if isempty(data.radius) | data.radius <= 0     errordlg('Argument ''Neighborhood Radius'' must be a positive float.');     return;   end   if isempty(data.data)     errordlg('Argument ''Teaching Data'' must be a string.');     return;   end   if isempty(data.input_file_type)     sData=evalin('base',data.data);   else      sData=data.data;   end   if isempty(data.out_file);     data.outfile = [];   end   if isempty(data.map)     errordlg('Argument ''Workspace Map'' must be a string.');     return;   end   if isempty(data.map_type)     sMap=evalin('base',data.map);   else     sMap=data.map;   end   answer=sompak_train(sMap,...                       data.map_type,...                       data.out_file,...                       data.out_file_type,...                       data.data,...                       data.input_file_type,...                       data.rlen,...                       data.alpha,...                       data.radius);   if any(strcmp(data.out_var,{'''ans''','ans'})) | isstr(answer)     varargout{1}=answer;   else     assignin('base',data.out_var,answer);     disp(sprintf('Map is set to workspace as ''%s''.',data.out_var));   end   close(findobj(get(0,'Children'),'Tag','TrainGUI'));    return;  case 'sammon_ok'   if isempty(data.map)    errordlg('Argument ''Workspace Map'' must be a string.');    return;   end   if isempty(data.map_type)     sMap=evalin('base',data.map);   else     sMap=data.map;   end   if isempty(data.out_file);     data.outfile = [];   end   answer=sompak_sammon(sMap,...                        data.map_type,...                        data.out_file,...                        data.out_file_type,...                        data.rlen);   if strcmp(data.out_var,'''ans''')|strcmp(data.out_var,'ans')|isstr(answer)     varargout{1}=answer;   else     assignin('base',data.out_var,answer);     disp(sprintf('Codebook is set to workspace as ''%s''.',data.out_var));   end   close(findobj(get(0,'Children'),'Tag','SammonGUI'));    return;endset(gcf,'UserData',data);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function bool = is_positive_integer(x)bool = ~isempty(x) & isreal(x) & all(size(x) == 1) & x > 0;if ~isempty(bool)  if bool & x~=round(x)    bool = 0;  endelse  bool = 0;end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

⌨️ 快捷键说明

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