📄 som_gui.m
字号:
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 [] = browse()global HANDLE2;HandleWorkspace = findobj(gcbf,'Tag','Radiobutton2');HandleFile = findobj(gcbf,'Tag','Radiobutton1');WorkspaceVal = get(HandleWorkspace,'Value');FileVal = get(HandleFile,'Value');if FileVal == 1 Handle = findobj(gcbf,'Tag','PopupMenu1'); str = get(Handle,'String'); value = get(Handle,'Value'); str = str{value}; if strcmp(str,'mat file') filtter = '*.mat'; else filtter = '*.dat*'; end [filename pathname] = uigetfile(filtter,'Load file.'); temp = strcat(pathname,filename); Handle = findobj(gcbf,'Tag','EditText2'); set(Handle,'String',temp);elseif WorkspaceVal == 1 HANDLE2 = gcf; works; temp = evalin('base','who'); index2 = 1; names = ''; for index = 1:length(temp) if isnumeric(evalin('base',temp{index})) test = size(evalin('base',temp{index})); if test(1) ~= 1 & test(2) ~= 1 names{index2} = temp{index}; index2 = index2 + 1; end end end for index = 1:length(temp) variable = evalin('base',temp{index}); if isstruct(variable) fnames = fieldnames(variable); if size(fnames,1) == 6 & strcmp(fnames(1),'type') & strcmp(variable.type,'som_data') names{index2} = temp{index}; index2 = index2 + 1; end end end Handle = findobj(gcf,'Tag','Listbox1');
%%%%%% if is empty string#%%% set(Handle,'String',names);else errmsg = 'Select browse type: Workspace or file.'; errordlg(errmsg,'Browse error!'); return;endfunction [] = works_ok()global HANDLE2;Handle = findobj(gcbf,'Tag','Listbox1');temp = get(Handle,'String');val = get(Handle,'Value');data = temp{val};Handle = findobj(HANDLE2,'Tag','EditText1');set(Handle,'String',data);close;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF LOAD SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% START OF INITIALIZATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [] = def_initialization()global DATA STOPOLINIT INIT_TYPE;sTopol = som_topol_struct('data',DATA);Handle = findobj(gcf,'Tag','StaticText5');temp = num2str(sTopol.msize);temp = strcat('map size:',' [',temp,']');set(Handle,'String',temp);Handle = findobj(gcf,'Tag','StaticText6');set(Handle,'String','type: linear');Handle = findobj(gcf,'Tag','StaticText20');temp = strcat('lattice:',sTopol.lattice);set(Handle,'String',temp);Handle = findobj(gcf,'Tag','StaticText21');temp = strcat('shape:',sTopol.shape);set(Handle,'String',temp);STOPOLINIT = sTopol;INIT_TYPE = 'linear';function [] = change_initialization()global INIT_TYPE STOPOLINIT; initialization2;Handle = findobj(gcf,'Tag','PopupMenu1');temp = get(Handle,'String');val = loop(temp,INIT_TYPE);set(Handle,'Value',val);Handle = findobj(gcf,'Tag','PopupMenu2');temp = get(Handle,'String');val = loop(temp,STOPOLINIT.lattice);set(Handle,'Value',val);Handle = findobj(gcf,'Tag','PopupMenu3');temp = get(Handle,'String');val = loop(temp,STOPOLINIT.shape);set(Handle,'Value',val);Handle = findobj(gcf,'Tag','EditText1');temp = num2str(STOPOLINIT.msize);msize = strcat('[',temp,']');set(Handle,'String',msize);function [] = change_initialization_ok()Handle = findobj(gcbf,'Tag','PopupMenu1');temp = get(Handle,'String');val = get(Handle,'Value');INIT_TYPE = temp{val};Handle = findobj(gcbf,'Tag','PopupMenu2');temp = get(Handle,'String');val = get(Handle,'Value');lattice = temp{val};Handle = findobj(gcbf,'Tag','PopupMenu3');temp = get(Handle,'String');val = get(Handle,'Value');shape = temp{val};Handle = findobj(gcbf,'Tag','EditText1');temp = get(Handle,'String');msize = str2num(temp);STOPOLINIT = som_set('som_topol','msize',msize,'lattice',lattice,'shape',shape);close(gcf);Handle = findobj(gcf,'Tag','StaticText5');temp = num2str(STOPOLINIT.msize);temp = strcat('map size:',' [',temp,']');set(Handle,'String',temp);Handle = findobj(gcf,'Tag','StaticText6');temp = strcat('type:',INIT_TYPE);set(Handle,'String',temp);Handle = findobj(gcf,'Tag','StaticText20');temp = strcat('lattice:',STOPOLINIT.lattice);set(Handle,'String',temp);Handle = findobj(gcf,'Tag','StaticText21');temp = strcat('shape:',STOPOLINIT.shape);set(Handle,'String',temp);function [] = def_values_others()global SOTHERS;Handle = findobj(gcf,'Tag','StaticText19');temp = strcat('tracking:',SOTHERS.tracking);set(Handle,'String',temp);Handle = findobj(gcf,'Tag','StaticText12');temp = strcat('order:',SOTHERS.oder);set(Handle,'String',temp); Handle = findobj(gcf,'Tag','StaticText14');temp = strcat('length_type:',SOTHERS.length_type);set(Handle,'String',temp);function [] = fill_fields()global STRAIN1 STRAIN2 ALGORITHMneigh = STRAIN1.neigh;mask = STRAIN1.mask;rad_ini1 = STRAIN1.radius_ini;rad_ini2 = STRAIN2.radius_ini;rad_fin1 = STRAIN1.radius_fin;rad_fin2 = STRAIN2.radius_fin;trainlen1 = num2str(STRAIN1.trainlen);trainlen2 = num2str(STRAIN2.trainlen);alpha_ini1 = num2str(STRAIN1.alpha_ini);alpha_ini2 = num2str(STRAIN2.alpha_ini);if strcmp(ALGORITHM,'seq') alpha_type = STRAIN1.alpha_type; %%% only in sequential Handle = findobj(gcf,'Tag','StaticText28'); temp = strcat('alpha type:',alpha_type); set(Handle,'String',temp);endHandle = findobj(gcf,'Tag','StaticText11');temp = strcat('neigh: ',neigh);set(Handle,'String',temp);Handle = findobj(gcf,'Tag','StaticText22');temp = num2str(rad_fin1);temp = strcat('radius final:',temp);set(Handle,'String',temp);Handle = findobj(gcf,'Tag','StaticText25');temp = num2str(rad_fin2);temp = strcat('radius final:',temp);set(Handle,'String',temp);Handle = findobj(gcf,'Tag','StaticText11');temp = strcat('neigh: ',neigh);set(Handle,'String',temp);Handle = findobj(gcf,'Tag','StaticText17');temp = num2str(rad_ini1);temp = strcat('radius initial:',temp);set(Handle,'String',temp);Handle = findobj(gcf,'Tag','StaticText24');temp = num2str(rad_ini2);temp = strcat('radius initial:',temp);set(Handle,'String',temp);Handle = findobj(gcf,'Tag','StaticText16');temp = num2str(trainlen1);temp = strcat('training length:',temp);set(Handle,'String',temp);Handle = findobj(gcf,'Tag','StaticText23');temp = num2str(trainlen2);temp = strcat('training length:',temp);set(Handle,'String',temp);Handle = findobj(gcf,'Tag','StaticText26');temp = strcat('alpha initial:',alpha_ini1);set(Handle,'String',temp);Handle = findobj(gcf,'Tag','StaticText27');temp = strcat('alpha initial:',alpha_ini2);set(Handle,'String',temp);function [] = init();global INIT_TYPE MAP NEWMAP ALGORITHM SOTHERS DATA STOPOLINIT;if strcmp(INIT_TYPE,'random') MAP = som_randinit(DATA,STOPOLINIT);else MAP = som_lininit(DATA,STOPOLINIT);endNEWMAP = MAP; temp = 'Map:';temp = strcat(temp,' <',MAP.name,'>');Handle = findobj(gcbf,'Tag','StaticText3');set(Handle,'String',temp);Handle = findobj(gcbf,'Tag','StaticText10');set(Handle,'String','Status <map initialized>');ALGORITHM = 'batch';Handle = findobj(gcbf,'Tag','Pushbutton4');set(Handle,'Enable','off');Handle = findobj(gcbf,'Tag','Pushbutton6');set(Handle,'Enable','on');Handle = findobj(gcbf,'Tag','Pushbutton5');set(Handle,'Enable','on'); SOTHERS.tracking = '1';SOTHERS.length_type = 'epochs';SOTHERS.oder = 'random'; som_gui('def_values_topol');som_gui('def_values_train');som_gui('def_values_others');som_gui('fill_fields');Handle = findobj(gcbf,'Tag','Pushbutton4');set(Handle,'Enable','off');Handle = findobj(gcbf,'Tag','Pushbutton9');set(Handle,'Enable','off');Handle = findobj(gcbf,'Tag','Radiobutton1');set(Handle,'Enable','on');Handle = findobj(gcbf,'Tag','&Init&TrainChange initialization valuesuimenu1');set(Handle,'Enable','on');Handle = findobj(gcbf,'Tag','&Init&TrainTrain1');set(Handle,'Enable','on');Handle = findobj(gcbf,'Tag','&Help/InfoData infouimenu1');set(Handle,'Enable','on'); Handle = findobj(gcbf,'Tag','Subuimenu2');set(Handle,'Enable','off');Handle = findobj(gcbf,'Tag','&Init&Trainuimenu1');set(Handle,'Enable','off');Handle = findobj(gcbf,'Tag','&Init&TrainInitialize1');set(Handle,'Enable','off'); %%%%%%%%%%%?????????? Handle = findobj(gcbf,'Tag','StaticText9');set(Handle,'String','training type: batch'); function [] = set_batch_mask()Handle = findobj(gcbf,'Tag','Listbox2');temp = get(Handle,'String');mask = str2num(temp);Handle = findobj(gcbf,'Tag','Listbox1');replace = get(Handle,'Value');Handle = findobj(gcbf,'Tag','EditText2');temp = get(Handle,'String');value = str2num(temp);if not(isempty(value)) mask(replace) = value; Handle = findobj(gcbf,'Tag','Listbox2'); temp = num2str(mask); set(Handle,'String',temp);endfunction [] = munits()global DATA STOPOLINIT;msgs = {'Correct map units is number';'Correct map units is number'};[msgs_nro, value] = check_ok('EditText2');if msgs_nro > 0 errordlg({msgs{msgs_nro}},'Incorrect map units!') return;endSTOPOLINIT = som_topol_struct('munits',value,'data',DATA);Handle = findobj(gcbf,'Tag','EditText1');temp = num2str(STOPOLINIT.msize);msize = strcat('[',temp,']');set(Handle,'String',msize);function [] = map_size() global STOPOLINIT; msgs = {'Map size must be in form [x y]';... 'Map size must be in form [x y]'}; [msgs_nro, value, Handle] = msize_ok('EditText1'); if msgs_nro > 0 errordlg({msgs{msgs_nro}},'Incorrect map size!'); temp = num2str(STOPOLINIT.msize); temp = strcat('[',temp,']'); set(Handle,'String',temp); return; end STOPOLINIT.msize = value; Handle = findobj(gcbf,'Tag','EditText2'); set(Handle,'String','');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF INITIALIZATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% START OF TRAINING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [] = def_train()global SOTHERS ALGORITHM MAP NEWST DATA STRAIN1 STRAIN2 MAPSAVED;tlen_type = SOTHERS.length_type;sample_order = SOTHERS.oder; tracking = SOTHERS.tracking;test = str2num(tracking);Handle = findobj(gcbf,'Tag','Radiobutton1');tempval = get(Handle,'Value');if strcmp(ALGORITHM,'seq') if tempval ~= 1 [MAP NEWST] = som_seqtrain(MAP,DATA,'train',STRAIN1,tlen_type,sample_order); end if test > 1 figure; set(gcf,'Name',MAP.name); set(gcf,'NumberTitle','off'); end [NEWMAP NEWST] = som_seqtrain(MAP,DATA,'train',STRAIN2,'tracking',test,tlen_type,sample_order); else if tempval ~= 1 [MAP NEWST] = som_batchtrain(MAP,DATA,'train',STRAIN1); end if test > 1 figure; set(gcf,'Name',MAP.name); set(gcf,'NumberTitle','off'); end [NEWMAP NEWST] = som_batchtrain(MAP,DATA,'train',STRAIN2,'tracking',test);endMAP = NEWMAP;clear MAPSAVED; Handle = findobj(gcbf,'Tag','StaticText10');set(Handle,'String','Status <map trained>');Handle = findobj(gcbf,'Tag','Load/SaveSubuimenu1');set(Handle,'Enable','on'); Handle = findobj(gcbf,'Tag','Load/SaveSave mapuimenu1');set(Handle,'Enable','on'); Handle = findobj(gcbf,'Tag','&Load/SaveSave mapSave in workspaceuimenu1');set(Handle,'Enable','on');Handle = findobj(gcbf,'Tag','&ToolsSubuimenu1');set(Handle,'Enable','on');Handle = findobj(gcbf,'Tag','&Init&TrainChange initialization valuesuimenu1');set(Handle,'Enable','off');Handle = findobj(gcbf,'Tag','&Init&TrainTrain1');set(Handle,'Enable','off'); function [] = change_def()global ALGORITHM STRAIN1 DATA; ButtonName = questdlg('Select training type!',... 'Change values.',... 'Batch','Sequential','Cancel',... 'Batch'); if strcmp(ButtonName,'Sequential') Handle = findobj(gcbf,'Visible','off'); set(Handle,'Visible','on'); ALGORITHM = 'seq'; Handle = findobj(gcf,'Tag','StaticText9'); set(Handle,'String','training type: sequential'); new_para2_2; Handle = findobj(gcf,'Tag','StaticText1'); set(Handle,'String','Change parameters for sequential training'); Handle = findobj(gcf,'Enable','off'); set(Handle,'Enable','on'); Handle = findobj(gcf,'Visible','off'); set(Handle,'Visible','on');elseif strcmp(ButtonName,'Batch') ALGORITHM = 'batch'; Handle = findobj(gcbf,'Tag','StaticText26'); set(Handle,'Visible','off'); Handle = findobj(gcbf,'Tag','StaticText27'); set(Handle,'Visible','off'); Handle = findobj(gcf,'Tag','StaticText9'); set(Handle,'String','training type: batch'); Handle = findobj(gcf,'Tag','StaticText12'); set(Handle,'Visible','off'); Handle = findobj(gcf,'Tag','StaticText28'); set(Handle,'Visible','off'); Handle = findobj(gcf,'Tag','StaticText14'); set(Handle,'Visible','off'); new_para2_2; Handle = findobj(gcf,'Tag','StaticText1');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -