📄 classifier_commands.m
字号:
% This is the "core" of the %%function classifier_commands(command)persistent Preprocessing_methods;persistent Algorithms;persistent Frameworks;if (isempty(Preprocessing_methods) | isempty(Algorithms) | isempty(Frameworks)) Algorithms = read_algorithms('Algorithms.txt'); Preprocessing_methods = read_algorithms('Preprocessing.txt'); load FrameworkNames;end%This function processes most events from the main GUI screenswitch(command) case 'Init' %Init of the classifier GUI h = findobj('Tag', 'Preprocessing'); set(h,'String',strvcat(Preprocessing_methods(:).Name)); chosen = strmatch('None',char(Preprocessing_methods(:).Name)); set(h,'Value',chosen); h = findobj('Tag', 'Algorithm'); set(h,'String',strvcat(Algorithms(:).Name)); chosen = strmatch('LS',char(Algorithms(:).Name)); set(h,'Value',chosen); h = findobj('Tag', 'frameworkToBeUsed'); set(h,'String',strvcat(Frameworks(:))); chosen = strmatch('Framework_for_Class',char(Frameworks(:))); set(h,'Value',chosen); case 'Changed Preprocessing' fprintf('Changed Preprocessing\n'); h = findobj(gcbf, 'Tag', 'Preprocessing'); chosen = get(h, 'Value'); hLabel = findobj(gcbf, 'Tag', 'lblPreprocessingParameters'); hBox = findobj(gcbf, 'Tag', 'txtPreprocessingParameters'); set(hBox,'Visible','on'); if ~isempty(chosen), set(hLabel,'String',Preprocessing_methods(chosen).Caption); set(hBox,'String',Preprocessing_methods(chosen).Default); if strcmp(char(Preprocessing_methods(chosen).Field),'N') set(hLabel,'String',''); set(hBox,'Visible','off'); end else set(hLabel,'String',''); set(hBox,'Visible','off'); end % ================================case 'Changed Algorithm' fprintf('Changed Algorithm\n'); h = findobj(gcbf, 'Tag', 'Algorithm'); chosen = get(h, 'Value'); hLabel = findobj(gcbf, 'Tag', 'lblAlgorithmParameters'); hBox = findobj(gcbf, 'Tag', 'txtAlgorithmParameters'); hLongBox = findobj(gcbf, 'Tag', 'txtAlgorithmParametersLong'); set(hBox,'Visible','on'); if ~isempty(chosen), set(hLabel,'String',Algorithms(chosen).Caption); % Special Cases, where there is a difference between % the original framework and the % disp(Algorithms(chosen)) if (strcmp(Algorithms(chosen).Name,'SVM')) Algorithms(chosen) = DifferentSetup(Algorithms(chosen)); end switch Algorithms(chosen).Field case 'S' set(hBox,'String',Algorithms(chosen).Default); set(hBox,'Visible','on'); set(hLongBox,'Visible','off'); case 'L' set(hLongBox,'String',Algorithms(chosen).Default); set(hBox,'Visible','off'); set(hLongBox,'Visible','on'); case 'N' set(hLabel,'String',''); set(hBox,'Visible','off'); set(hLongBox,'Visible','off'); end else set(hLabel,'String',''); set(hBox,'Visible','off'); set(hLongBox,'Visible','off'); end case 'FileNameInput' fprintf('FileNameInput\n'); evalin('base','hold off') evalin('base','clear m0 m1 s0 s1 w0 w1 p0 features targets') evalin('base','h = findobj(''Tag'', ''BayesError'');') evalin('base','set(h, ''String'', '''');') evalin('base','h = findobj(''Tag'', ''TestSetError'');') evalin('base','set(h, ''String'', '''');') evalin('base','h = findobj(''Tag'', ''TrainSetError'');') evalin('base','set(h, ''String'', '''');') evalin('base','region = [0 0 0 0 500];') evalin('base','filename = get(gcbo, ''String'');') evalin('base','pathname = cd;') evalin('base','[features, targets] = load_file([pathname ''\'' filename], ''points'', region);') case 'SearchForFile' fprintf('SearchForFile\n'); evalin('base','region = [0 0 0 0 500];') evalin('base','[filename, pathname] = uigetfile(''*.mat'', ''Open file ...'');') if (evalin('base','filename ~= 0')), evalin('base','clear m0 m1 s0 s1 w0 w1 p0 features targets') evalin('base','h = findobj(''Tag'', ''BayesError'');') evalin('base','set(h, ''String'', '''');') evalin('base','h = findobj(''Tag'', ''TestSetError'');') evalin('base','set(h, ''String'', '''');') evalin('base','h = findobj(''Tag'', ''TrainSetError'');') evalin('base','set(h, ''String'', '''');') evalin('base','h = findobj(''Tag'', ''FileNameInput'');') evalin('base','set(h, ''String'', [pathname filename]);') evalin('base','[features, targets] = load_file([pathname filename], ''points'', region);') evalin('base','region = calculate_region(features, [zeros(1,4) 100]);') end case 'EnterManualDist' fprintf('EnterManualDist\n'); classifier_commands('ClearWorkspace'); evalin('base','ttl = ''Manual definition of distribution'';') evalin('base','n0 = str2num(char(inputdlg(''Enter the number of Gaussians in class 0:'',ttl,1,cellstr(num2str(1)))));') evalin('base','n1 = str2num(char(inputdlg(''Enter the number of Gaussians in class 1:'',ttl,1,cellstr(num2str(1)))));') evalin('base','p0 = str2num(char(inputdlg(''Enter the probability of class 0:'',ttl,1,cellstr(num2str(0.5)))));') evalin('base','m0 = zeros(n0,2);') evalin('base','m1 = zeros(n1,2);') evalin('base','s0 = zeros(n0,2,2);') evalin('base','s1 = zeros(n1,2,2);') evalin('base','for i = 1:n0, s0(i,:,:) = eye(2); end') evalin('base','for i = 1:n1, s1(i,:,:) = eye(2); end') evalin('base','w0 = ones(n0,1)/n0;') evalin('base','w1 = ones(n1,1)/n1;') evalin('base','save synthetic m0 m1 s0 s1 w0 w1 p0') evalin('base','uiwait(enter_distributions);') evalin('base','region = [0 0 0 0 500];') evalin('base','[m0, m1, s0, s1, w0, w1, p0] = load_file(''synthetic'', ''dist'', region);') case 'LoadDistFile' fprintf('LoadDistFile\n'); evalin('base','region = [0 0 0 0 500];') evalin('base','[filename, pathname] = uigetfile(''*.mat'', ''Open file ...'');') if (evalin('base','filename ~= 0')), evalin('base','[m0, m1, s0, s1, w0, w1, p0] = load_file([pathname filename], ''dist'', region);') end case 'ManualGraphData' fprintf('ManualGraphData\n'); %Graphically enter a data set evalin('base','if ~(exist(''region'')), region = [-1 1 -1 1 100];end'); evalin('base','if (sum(region(1:4)) == 0), region = [-1 1 -1 1 100];end'); evalin('base','if ~(exist(''features'')), features = []; end'); evalin('base','if ~(exist(''targets'')), targets = []; end'); evalin('base','if ~(exist(''m0'')), m0 = []; m1 = []; s0 = []; s1 = []; w0 = []; w1 = []; end'); evalin('base','[new_features, new_targets, new_m0, new_m1, new_s0, new_s1, new_w0, new_w1, p0, region] = click_points(region);'); evalin('base','features = [features, new_features];'); evalin('base','targets = [targets, new_targets];'); evalin('base','m0 = [m0; new_m0];'); evalin('base','m1 = [m1; new_m1];'); evalin('base','s0 = [s0; new_s0];'); evalin('base','s1 = [s1; new_s1];'); evalin('base','w0 = [w0; new_w0];w0=w0/sum(w0);'); evalin('base','w1 = [w1; new_w1];w1=w1/sum(w1);'); evalin('base','p0 = length(w0)/(length(w0)+length(w1));'); evalin('base','region = calculate_region(features, [zeros(1,4) 100]);') case 'SaveFeatures' fprintf('SaveFeatures\n'); evalin('base','[filename, pathname] = uiputfile(''*.mat'', ''Save file ...'');') if (evalin('base','filename ~= 0')), evalin('base','save([pathname filename], ''features'', ''targets'');') end case 'SaveParameters' fprintf('SaveParameters\n'); evalin('base','[filename, pathname] = uiputfile(''*.mat'', ''Save file ...'');') if (evalin('base','filename ~= 0')), evalin('base','save([pathname filename], ''m0'', ''m1'', ''s0'', ''s1'', ''w0'', ''w1'', ''p0'');') end case 'GenerateDistData' fprintf('GenerateDistData\n'); evalin('base','region = [0 0 0 0 100];') evalin('base','[features, targets] = generate_data_set (m0, m1, s0, s1, w0, w1, p0, region);') evalin('base','region = calculate_region(features, [zeros(1,4) 100]);') case 'Params' fprintf('Params\n'); %Print to mean, cov, main directions to workspace if (evalin('base','~isempty(whos(''features''))')) %There are features on workspace evalin('base','train_one = find(targets == 1);') evalin('base','train_zero = find(targets == 0);') %Estimate mean and covariance for class 0 evalin('base','disp([''Mean for class 0 is: '' num2str(mean(features(:,train_zero)''))]);') evalin('base','disp([''Covariance matrix for class 0 is:''])') evalin('base','disp(num2str(cov(features(:,train_zero)'')));') evalin('base','disp([''Probability of class 0 is: '' num2str(length(train_zero)/length(targets))]);') %Estimate mean and covariance for class 1 evalin('base','disp([''Mean for class 1 is: '' num2str(mean(features(:,train_one)''))]);') evalin('base','disp([''Covariance matrix for class 1 is:''])') evalin('base','disp(num2str(cov(features(:,train_one)'')));') evalin('base','disp([''Probability of class 1 is: '' num2str(length(train_one)/length(targets))]);') end case 'MenuZoom' fprintf('MenuZoom\n'); evalin('base','umtoggle(findobj(gcbf,''Label'',''&Zoom''));') evalin('base','h = findobj(gcbf, ''Label'', ''&Zoom'');') evalin('base','v = strcmp(''on'',get(h, ''Checked''));') if evalin('base','v'), evalin('base','zoom on') else evalin('base','zoom off') endcase 'MenuGrid' fprintf('MenuGrid\n'); evalin('base','umtoggle(findobj(gcbf,''Label'',''&Grid''));') evalin('base','h = findobj(gcbf, ''Label'', ''&Grid'');') evalin('base','v = strcmp(''on'',get(h, ''Checked''));') if evalin('base','v'), evalin('base','grid on') else evalin('base','grid off') end case 'Copy' fprintf('Copy\n'); evalin('base','h = figure;') evalin('base','c = copyobj(findobj(''Type'',''axes''),h);') evalin('base','set(gca,''Position'',[0.1300 0.1100 0.7750 0.8150])') %evalin('base','colormap([198 198 255; 240 255 240]/255)') evalin('base','print -dmeta') case 'Print' fprintf('Print\n'); evalin('base','h = figure;') evalin('base','c = copyobj(findobj(''Type'',''axes''),h);') evalin('base','set(gca,''Position'',[0.1300 0.1100 0.7750 0.8150])') evalin('base','colormap([198 198 255; 240 255 240]/255)') evalin('base','printpreview') case 'Exit' fprintf('Print\n'); evalin('base','h = findobj(''Tag'', ''Messages'');') evalin('base','set(h,''String'','''');') evalin('base','h = findobj(''Tag'', ''TestSetError'');') evalin('base','set(h, ''String'', '''');') evalin('base','h = findobj(''Tag'', ''TrainSetError'');') evalin('base','set(h, ''String'', '''');') evalin('base','h = findobj(''Tag'', ''FileNameInput'');') evalin('base','set(h, ''String'', '''');') evalin('base','h = findobj(''Tag'', ''PercentTraining'');') evalin('base','set(h, ''String'', '''');') evalin('base','h = findobj(''Tag'', ''Redraws'');') evalin('base','set(h, ''String'', '''');') evalin('base','h = findobj(''Tag'', ''HowMany'');') evalin('base','set(h, ''String'', '''');') evalin('base','set(gcf, ''pointer'', ''arrow'');') evalin('base','close') case 'SeparatePreprocessing' fprintf('Print\n'); evalin('base','umtoggle(findobj(gcbf,''Label'',''&Perform preprocessing separately for each class''));') case 'ShowPartitions' fprintf('Print\n'); evalin('base','umtoggle(findobj(gcbf,''Label'',''&Show center of partitions during training''));') case 'ShowTrainingPoints' fprintf('ShowTrainingPoints\n'); evalin('base','umtoggle(findobj(gcbf,''Label'',''Show &Training points''));') case 'ShadeDecisionRegion' fprintf('ShadeDecisionRegion\n'); evalin('base','umtoggle(findobj(gcbf,''Label'',''Shade &Decision Regions''));') case 'ClearBounds' fprintf('ClearBounds\n'); %Clear all bounds evalin('base','hold off') evalin('base','plot_scatter(features, targets, gcbf)') evalin('base','drawnow') evalin('base','h = findobj(''Tag'', ''TestSetError'');') evalin('base','set(h, ''String'', '''');') evalin('base','h = findobj(''Tag'', ''TrainSetError'');') evalin('base','set(h, ''String'', '''');')case 'ClearWorkspace' fprintf('ClearWorkspace\n'); %Clear all evalin('base','h = findobj(''Tag'', ''TestSetError'');') evalin('base','set(h, ''String'', '''');') evalin('base','h = findobj(''Tag'', ''TrainSetError'');') evalin('base','set(h, ''String'', '''');') evalin('base','h = findobj(''Tag'', ''BayesError'');') evalin('base','set(h, ''String'', '''');') evalin('base','h = findobj(''Tag'', ''FileNameInput'');') evalin('base','set(h, ''String'', '''');') evalin('base','hold off') evalin('base','plot(0,0); grid on;') evalin('base','clear all')case 'MixFeatures' fprintf('MixFeatures\n'); %Mix (permute) the features if (evalin('base','exist(''features'')') & evalin('base','exist(''targets'')')), evalin('base','indexes = randperm(length(targets));') evalin('base','features = features(:,indexes);') evalin('base','targets = targets(indexes);') evalin('base','h = findobj(''Tag'', ''Messages'');') evalin('base','set(h,''String'',''Features were permuted.'');') else error('No features or targets in workspace!'); endcase 'About' im = imread('about','bmp'); plot(0,0) h = image(im);end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -