📄 som_gui.m
字号:
function som_gui(varargin)%SOM_GUI A GUI for initialization and training of SOM.%% som_gui([sD]) % % som_gui% som_gui(sD)%% Input and output arguments ([]'s are optional) % [sD] (struct) SOM data struct% (matrix) a data matrix, size dlen x dim%% Actually, there are more arguments the function takes, but % they are for internal action of the function only. DO NOT use% them.%% For a more throughout description, see the online documentation.% See also PREPROCESS.%%%%%%%%%%%% DETAILED DESCRIPTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% IN FILES: som_gui.html,browsewin.jpg,wspace.jpg,loadgui.jpg,initgui.jpg,questdlg.jpg,paragui.jpg,mwindow.jpg,visgui.gif,reload.gif,savemap.gif,browse.gif%% Contributed to SOM Toolbox vs2, February 2nd, 2000 by Mika Pollari% Copyright (c) by Mika Pollari and SOM Toolbox Team% http://www.cis.hut.fi/projects/somtoolbox/% Mika Pollari 31.1.2000 vs 1.1global NEWMAP NEWST MAPSAVED MAP DATA LOAD_NAME LOAD_DATA;global SAVEMAP ALGORITHM HANDLE2 STOPOLINIT INIT_TYPE;global STRAIN1 STRAIN2 SOTHERS;if nargin == 0 main_gui; action = 'dummy'; elseif nargin == 1 temp = varargin{1}; if isstruct(temp), DATA = temp; main_gui; action = 'input_data'; elseif isnumeric(temp), DATA = som_data_struct(temp); main_gui; action = 'input_data'; else action = temp; endend switch(action)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LOAD %%%%%%%%%%%%%%%%%%%%%%%%%% case 'load_data' loadgui3; %%% Activates load GUI case 'workspace' workspace; %%% Workspace selected case 'file' file; %%% File Selected case 'file_select' file_select; case 'missing' Handle = findobj(gcf,'Tag','Checkbox1'); set(Handle,'Value',1); case 'load_ok' %%% <Load OK> pushed load_ok; case 'input_data' %%% GUI activated with data as arg1 input_data; %%% eg. som_gui(data) case 'browse' %%% Activates Browse GUI browse; %%% Browse files or workspace variables case 'works_ok' %%% <OK> pushed in (workspace) browse GUI works_ok;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Initialization %%%%%%%%%%%%%%%%%%%%%%%%%%%% case 'def_initialization' %%% Finds default initialization ... def_initialization; %%% parameters case 'change_initialization' %%% Activates change (init) parameters GUI change_initialization; case 'change_initialization_ok'%%% Set new init. parameters change_initialization_ok; case 'change_initialization_cancel' close(gcf); return; case 'map_size' %%% Checks that 'map_size' is given in correct form map_size; case 'munits' %%% Checks that 'munits' is given in correct form munits; case 'init' %%% Initialize Map init;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Train %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% case 'def_values_others' def_values_others; case 'def_values_train' STRAIN1 = som_train_struct('algorithm',ALGORITHM,'phase','rough','data',DATA); STRAIN2 = som_train_struct('previous',STRAIN1); case 'fill_fields' %%% Fill text fields in GUI fill_fields; case 'def_train' %%% Train Map def_train; case 'change_def' %%% Change default training parameters change_def; %%% Activate GUI case 'fill_new_defaults' fill_new_defaults; case 'set_batch_mask' set_batch_mask; case 'set_new_parameters' set_new_parameters; case 'only_finetune' %%% Train only once with finetune parameters only_finetune;%%%%%%% Next function check correctnes of new training parameters. case 'check_rough_radini' check_rough_radini; case 'check_fine_radini' check_fine_radini; case 'check_rough_radfin' check_rough_radfin; case 'check_fine_radfin' check_fine_radfin; case 'check_rough_alphaini' check_rough_alphaini; case 'check_fine_alphaini' check_fine_alphaini; case 'check_rough_trainlen' check_rough_trainlen; case 'check_fine_trainlen' check_fine_trainlen;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Save Map %%%%%%%%%%%%%%%%%%%%%% case 'savemap' %%% Save as <.cod> file savemap; case 'save_workspace' %%% Save in workspace save_workspace;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Help & Info %%%%%%%%%%%%%%%%%%%%%%% case 'help' web file:///share/somtoolbox/vs2/html/som_GUI.html; case 'helpwin' helpwin1; case 'helpwin2' helpwin som_gui; case 'data_info' data_info; %%% Info about data case 'map_info' %%% Info about map map_info;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Other Functions %%%%%%%%%%%%%%%%%%%%%%% case 'preprocess' preprocess_gui; %%%%% Call preprocess GUI case 'visualize' visualize; %%%%% Call visualization GUI case 'clear_all' %%%%% Clear all filds clear_all; case 'close' close_fig; %%%%% Close active GUI end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF SWITCH-STATEMENT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% (SUB) FUNCTIONS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LOAD SECTION STARTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [] = workspace()Handle = findobj(gcbf,'Tag','Radiobutton2');Value = get(Handle,'Value');HandleTemp = findobj(gcbf,'Tag','Radiobutton1');if Value == 1 set(HandleTemp,'Value',0); HandleBar = findobj(gcbf,'Tag','PopupMenu1'); set(HandleBar,'Enable','off'); set(HandleBar,'Visible','off'); Handle3 = findobj(gcbf,'Tag','StaticText3'); set(Handle3,'Visible','off'); Handle3 = findobj(gcbf,'Tag','Checkbox1'); set(Handle3,'Visible','off'); Handle3 = findobj(gcbf,'Tag','EditText3'); set(Handle3,'Visible','off'); Handle = findobj(gcbf,'Tag','EditText2'); set(Handle,'String','');endfunction [] = file()Handle = findobj(gcbf,'Tag','Radiobutton1');Value = get(Handle,'Value');HandleTemp = findobj(gcbf,'Tag','Radiobutton2');if Value == 1 set(HandleTemp,'Value',0); HandleBar = findobj(gcbf,'Tag','PopupMenu1'); set(HandleBar,'Enable','on'); set(HandleBar,'Visible','on'); Handle3 = findobj(gcbf,'Tag','StaticText3'); set(Handle3,'Visible','on'); Handle3 = findobj(gcbf,'Tag','Checkbox1'); set(Handle3,'Visible','on'); Handle3 = findobj(gcbf,'Tag','EditText3'); set(Handle3,'Visible','on'); Handle = findobj(gcbf,'Tag','EditText1'); set(Handle,'String','');endfunction [] = file_select() Handle = findobj(gcbf,'Tag','PopupMenu1');temp = get(Handle,'String');val = get(Handle,'Value');Handle1 = findobj(gcbf,'Tag','Checkbox1');Handle2 = findobj(gcbf,'Tag','EditText3');if strcmp(temp{val},'dat file') set(Handle2,'String','x'); set(Handle1,'Enable','on'); set(Handle2,'Enable','on'); set(Handle1,'Visible','on'); set(Handle2,'Visible','on'); else set(Handle1,'Value',0); set(Handle1,'Enable','off'); set(Handle2,'Enable','off'); set(Handle1,'Visible','off'); set(Handle2,'Visible','off');endfunction [] = load_ok()global MAP DATA LOAD_DATA LOAD_NAME;Handle1 = findobj(gcbf,'Tag','EditText1');Handle2 = findobj(gcbf,'Tag','EditText2');Name1 = get(Handle1,'String');Name2 = get(Handle2,'String');if isempty(Name1) & not(isempty(Name2)) Handle = findobj(gcbf,'Tag','PopupMenu1') type = get(Handle,'String'); val = get(Handle,'Value'); type = type{val}; if strcmp(type,'mat file') ltemp = 'load:::'; ltemp = strcat(ltemp,Name2); ltemp = strrep(ltemp,':::',' '); evalin('base',ltemp); DATA = evalin('base','sD'); LOAD_DATA = evalin('base','sD.data'); LOAD_NAME = evalin('base','sD.name'); LOAD_NAME = strrep(LOAD_NAME,'.','_'); load_labels = evalin('base','sD.labels'); load_comp_names = evalin('base','sD.comp_names'); DATA = som_data_struct(LOAD_DATA); DATA.name = LOAD_NAME; DATA.comp_names = load_comp_names; DATA.labels = load_labels; else Handle = findobj(gcbf,'Tag','Checkbox1'); value = get(Handle,'Value'); if value == 0 temp = 'som_read_data('''; temp = strcat(temp,Name2,''');'); else Handle = findobj(gcbf,'Tag','EditText3'); missing = get(Handle,'String'); if not(isempty(missing)) temp = 'som_read_data('''; temp = strcat(temp,Name2,'''',',','''',missing,''');'); else temp = 'som_read_data('''; temp = strcat(temp,Name2,''');'); end end evalin('base',temp); DATA = evalin('base','ans'); name = DATA.name; temp = findstr('/',name); if not(isempty(temp)) name = name(temp(end)+1:end); end name = strrep(name,'.','_'); LOAD_NAME = name; DATA.name = name; endelseif isempty(Name2) & not(isempty(Name1)) LOAD_DATA = evalin('base',Name1); if not(isstruct(LOAD_DATA)) DATA = som_data_struct(LOAD_DATA); LOAD_NAME = Name1; DATA.name = Name1; else DATA = LOAD_DATA; name = DATA.name; temp = findstr('/',name); if not(isempty(temp)) name = name(temp(end)+1:end); end name = strrep(name,'.','_'); LOAD_NAME = name; DATA.name = name; endelse errmsg = {'Give name of data before loading'}; errordlg(errmsg,'Empty data name!'); return;endclose(gcbf); if not(isempty(MAP)) clear MAP; global MAP; str1 = 'Map: <empty>'; str2 = 'Train'; Handle = findobj(gcf,'Tag','StaticText3'); set(Handle,'String',str1); Handle = findobj(gcf,'Tag','StaticText8'); set(Handle,'String',str2);end temp = 'Data:';temp = strcat(temp,' <',LOAD_NAME,'>'); Handle = findobj(gcf,'Tag','StaticText4');set(Handle,'String',temp);som_gui('def_initialization');Handle = findobj(gcf,'Tag','Pushbutton2');set(Handle,'Enable','off');Handle = findobj(gcf,'Tag','Pushbutton4');set(Handle,'Enable','on');Handle = findobj(gcf,'Tag','Pushbutton9');set(Handle,'Enable','on');Handle = findobj(gcf,'Tag','Subuimenu2');set(Handle,'Enable','on');Handle = findobj(gcf,'Tag','&Help/InfoHelp windowuimenu1');set(Handle,'Enable','on');Handle = findobj(gcf,'Tag','&Init&Trainuimenu1');set(Handle,'Enable','on');Handle = findobj(gcf,'Tag','&Init&TrainInitialize1');set(Handle,'Enable','on');Handle = findobj(gcf,'Tag','Subuimenu1');set(Handle,'Enable','off'); %%%%%%???????? Handle = findobj(gcf,'Tag','StaticText10');set(Handle,'String','Status <data loaded>'); function [] = input_data()global DATA; name = DATA.name;newname = strrep(name,'.','_');DATA.name = newname;temp = strcat('Data: <',newname,'>'); Handle = findobj(gcf,'Tag','StaticText4');set(Handle,'String',temp);som_gui('def_initialization');Handle = findobj(gcf,'Tag','Pushbutton2');set(Handle,'Enable','off');Handle = findobj(gcf,'Tag','Pushbutton4');set(Handle,'Enable','on');Handle = findobj(gcf,'Tag','Pushbutton9');set(Handle,'Enable','on');Handle = findobj(gcf,'Tag','Subuimenu2');set(Handle,'Enable','on');Handle = findobj(gcf,'Tag','&Help/InfoHelp windowuimenu1');set(Handle,'Enable','on');Handle = findobj(gcf,'Tag','&Init&Trainuimenu1');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -