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

📄 discriminant.m

📁 This Two-Category Classifier Using Discriminant Functions to separeate two classes. The Classifier
💻 M
📖 第 1 页 / 共 2 页
字号:
    set(handles.covar22_c2,'String',sprintf('%3.1f',1));elseif val > 10     set(handles.covar22_c2,'String',sprintf('%3.1f',10));else set(handles.covar22_c2,'String',sprintf('%3.1f',val));end% --------------------------------------------------------------------function varargout = reset_Callback(h, eventdata, handles, varargin)set(handles.priore_c1,'String', sprintf('%3.2f',0.5));set(handles.priors_c1,'Value', str2num(get(handles.priore_c1,'String')));set(handles.mue1_c1, 'String', sprintf('%3.1f',-1));set(handles.mue2_c1, 'String', sprintf('%3.1f',1));set(handles.mus1_c1, 'Value', str2num(get(handles.mue1_c1,'String')));set(handles.mus2_c1, 'Value', str2num(get(handles.mue2_c1,'String')));set(handles.covar11_c1, 'String', sprintf('%3.1f',1));set(handles.covar12_c1, 'String', sprintf('%3.1f',0),'Enable','inactive');set(handles.covar21_c1, 'String', sprintf('%3.1f',0),'Enable','inactive');set(handles.covar22_c1, 'String', sprintf('%3.1f',1),'Enable','inactive');set(handles.priore_c2,'String', sprintf('%3.2f',0.5));set(handles.priors_c2,'Value', str2num(get(handles.priore_c2,'String')));set(handles.mue1_c2, 'String', sprintf('%3.1f',1));set(handles.mue2_c2, 'String', sprintf('%3.1f',-1));set(handles.mus1_c2, 'Value', str2num(get(handles.mue1_c2,'String')));set(handles.mus2_c2, 'Value', str2num(get(handles.mue2_c2,'String')));set(handles.covar11_c2, 'String', sprintf('%3.1f',1),'Enable','inactive');set(handles.covar12_c2, 'String', sprintf('%3.1f',0),'Enable','inactive');set(handles.covar21_c2, 'String', sprintf('%3.1f',0),'Enable','inactive');set(handles.covar22_c2, 'String', sprintf('%3.1f',1),'Enable','inactive');set(handles.range_min, 'String', num2str(-10));set(handles.range_max, 'String', num2str(10));set(handles.samples, 'String', num2str(50));set(handles.disc_case, 'Value', 1)  % for Case 1% --------------------------------------------------------------------function varargout = update_Callback(h, eventdata, handles, varargin)tic;n = str2num(get(handles.samples, 'String'));if (abs(fix(n))~=n)    n = str2num(sprintf('%1.0f',abs(fix(n))));    set(handles.samples, 'String', num2str(n));endrange = [str2num(get(handles.range_min, 'String')) str2num(get(handles.range_max, 'String'))];val = get(handles.normden, 'Value');prior1 = str2num(get(handles.priore_c1, 'String'));prior2 = str2num(get(handles.priore_c2, 'String'));if (prior1==1)|(prior2==1)    errordlg('!!!OOOPS!!! Priori Probability is 1','Log of 1 Error','on');    return;end;if (val==1)|(val==2)    mu_c1 = [str2num(get(handles.mue1_c1,'String')); str2num(get(handles.mue2_c1,'String'))];    covar_c1 = [str2num(get(handles.covar11_c1,'String')), str2num(get(handles.covar12_c1,'String'));...            str2num(get(handles.covar21_c1,'String')), str2num(get(handles.covar22_c1,'String'))];        mu_c2 = [str2num(get(handles.mue1_c2,'String')); str2num(get(handles.mue2_c2,'String'))];    covar_c2 = [str2num(get(handles.covar11_c2,'String')), str2num(get(handles.covar12_c2,'String'));...            str2num(get(handles.covar21_c2,'String')), str2num(get(handles.covar22_c2,'String'))];    if (det(covar_c1)>0)|(det(covar_c1)>0)        [bivar1,Xc1,Yc1]=bnorm(mu_c1, covar_c1, range, n);        [bivar2,Xc2,Yc2]=bnorm(mu_c2, covar_c2, range, n);        if val==1            rotate3d on            mesh(Xc1,Yc1,bivar1); hold on            mesh(Xc2,Yc2,bivar2); hold on            xlabel('x-axis'); ylabel('y-axis'); zlabel('Density function, p(x|w)');            title('Normal Bivariate Density of both classes')            %axes(handles.plot1)        elseif val==2            v1 = max(max(bivar1))./2.71828;             % 'peak/e' value where contour will be ploted            v2 = max(max(bivar2))./2.71828;            rotate3d off            contour(Xc1,Yc1,bivar1,[v1 v1],'r'); hold on            contour(Xc2,Yc2,bivar2,[v2 v2],'b'); hold on            xlabel('x-axis'); ylabel('y-axis');            title('Contour Plot of Normal Bivariate Density')        end        disc2class(bivar1, bivar2, prior1, prior2, range, n); hold off    else        err = {'Determinant of Covariance Matrix is not Positive.',            'Plot can not be updated.'};        errordlg(err,'Input Matrix Error','on');    endendif val==3    [univar1,xaxis1] = unorm(str2num(get(handles.mue1_c1,'String')),...        str2num(get(handles.covar11_c1,'String')), range, n);    [univar2,xaxis2] = unorm(str2num(get(handles.mue1_c2,'String')),...        str2num(get(handles.covar11_c2,'String')), range, n);    plot(xaxis1, univar1,'-.r'); hold on    plot(xaxis2, univar2,':b'); hold on    disc2class(univar1, univar2, prior1, prior2, range, n); hold off    xlabel('x-axis'); ylabel('Density, p(X)');    axis([range(1) range(2) 0 1.3.*max(max(univar1),max(univar2))])    title('Normal Univariate Density')    legend('Class 1','Class 2','Decision boundary')    %axes(handles.plot1)endtoc;set(handles.timetake, 'String', ['Time required to update plot: ' num2str(toc) ' seconds'])% --------------------------------------------------------------------function varargout = normden_Callback(h, eventdata, handles, varargin)val = get(handles.normden, 'Value');if val == 3 % univariate    set(handles.mue2_c1, 'Visible','off')    set(handles.mus2_c1, 'Visible','off')    set(handles.covar12_c1, 'Visible','off')    set(handles.covar21_c1, 'Visible','off')    set(handles.covar22_c1, 'Visible','off')        set(handles.mue2_c2, 'Visible','off')    set(handles.mus2_c2, 'Visible','off')    set(handles.covar12_c2, 'Visible','off')    set(handles.covar21_c2, 'Visible','off')    set(handles.covar22_c2, 'Visible','off')endif (val == 1)|(val == 2) % bivariate    set(handles.mue2_c1, 'Visible','on')    set(handles.mus2_c1, 'Visible','on')    set(handles.covar12_c1, 'Visible','on')    set(handles.covar21_c1, 'Visible','on')    set(handles.covar22_c1, 'Visible','on')        set(handles.mue2_c2, 'Visible','on')    set(handles.mus2_c2, 'Visible','on')    set(handles.covar12_c2, 'Visible','on')    set(handles.covar21_c2, 'Visible','on')    set(handles.covar22_c2, 'Visible','on')end% --------------------------------------------------------------------function varargout = priore_c1_Callback(h, eventdata, handles, varargin)val = str2num(get(handles.priore_c1,'String'));if isnumeric(val) & length(val) & isreal(val)==1    if val < get(handles.priore_c1,'Min')        set(handles.priore_c1, 'String', sprintf('%3.2f',get(handles.priore_c1,'Min')));    elseif val > get(handles.priore_c1,'Max')        set(handles.priore_c1, 'String', sprintf('%3.2f',get(handles.priors_c1,'Max')));    endelse    set(handles.priore_c1,'String',sprintf('%3.2f',get(handles.priors_c1,'Value')))endset(handles.priors_c1,'Value',str2num(get(handles.priore_c1,'String')));set(handles.priore_c2,'String', sprintf('%3.2f',1-get(handles.priors_c1,'Value')));set(handles.priors_c2,'Value', (1-get(handles.priors_c1,'Value')));% --------------------------------------------------------------------function varargout = priore_c2_Callback(h, eventdata, handles, varargin)val = str2num(get(handles.priore_c2,'String'));if isnumeric(val) & length(val) & isreal(val)==1    if val < get(handles.priore_c2,'Min')        set(handles.priore_c2, 'String', sprintf('%3.2f',get(handles.priore_c2,'Min')));    elseif val > get(handles.priore_c2,'Max')        set(handles.priore_c2, 'String', sprintf('%3.2f',get(handles.priors_c2,'Max')));    endelse    set(handles.priore_c2,'String',sprintf('%3.2f',get(handles.priors_c2,'Value')))endset(handles.priors_c2,'Value',str2num(get(handles.priore_c2,'String')));set(handles.priore_c1,'String', sprintf('%3.2f',1-get(handles.priors_c2,'Value')));set(handles.priors_c1,'Value', (1-get(handles.priors_c2,'Value')));% --------------------------------------------------------------------function varargout = priors_c1_Callback(h, eventdata, handles, varargin)if get(handles.priors_c1, 'Value')<=0     set(handles.priors_c1, 'Value', str2num(sprintf('%3.2f',0.01)))elseif get(handles.priors_c1, 'Value')>=1    set(handles.priors_c1, 'Value', str2num(sprintf('%3.2f',0.99)))endset(handles.priore_c1,'String', num2str(get(handles.priors_c1,'Value')));set(handles.priore_c2,'String', num2str(1-get(handles.priors_c1,'Value')));set(handles.priors_c2,'Value', (1-get(handles.priors_c1,'Value')));% --------------------------------------------------------------------function varargout = priors_c2_Callback(h, eventdata, handles, varargin)if get(handles.priors_c2, 'Value') <= 0     set(handles.priors_c2, 'Value', str2num(sprintf('%3.2f',0.01)))elseif get(handles.priors_c2, 'Value') >= 1     set(handles.priors_c2, 'Value', str2num(sprintf('%3.2f',0.99)))endset(handles.priore_c2,'String', num2str(get(handles.priors_c2,'Value')));set(handles.priore_c1,'String', num2str(1-get(handles.priors_c2,'Value')));set(handles.priors_c1,'Value', (1-get(handles.priors_c2,'Value')));% --------------------------------------------------------------------function varargout = disc_case_Callback(h, eventdata, handles, varargin)val = get(handles.disc_case, 'Value');if val == 1    case1 = {'Case 1: Features are statistically independent',        'Each features have same covariance and Covariance Matrix are diagonal.',        'Samples fall in equal-size hypersperical clusters'};    outcase1 = textwrap(handles.case_text,case1);    set(handles.case_text, 'String', outcase1)     set(handles.covar11_c1, 'Enable','on')    set(handles.covar12_c1, 'Enable','inactive','String',sprintf('%3.1f',0.0))    set(handles.covar21_c1, 'Enable','inactive','String',sprintf('%3.1f',0.0))    set(handles.covar22_c1, 'Enable','inactive','String',get(handles.covar11_c1,'String'))    set(handles.covar11_c2, 'Enable','inactive','String',get(handles.covar11_c1,'String'))    set(handles.covar12_c2, 'Enable','inactive','String',get(handles.covar12_c1,'String'))    set(handles.covar21_c2, 'Enable','inactive','String',get(handles.covar21_c1,'String'))    set(handles.covar22_c2, 'Enable','inactive','String',get(handles.covar22_c1,'String'))    endif val == 2    case2 = {'Case 2: Features are not necessarily statistically independent and',        'Covariance Matrix are identical for both the classes',        'Samples fall in equal-size hyperellipsoidal'};    outcase2 = textwrap(handles.case_text,case2);    set(handles.case_text, 'String', outcase2)     set(handles.covar11_c1, 'Enable','on');    set(handles.covar12_c1, 'Enable','on');    set(handles.covar21_c1, 'Enable','on');    set(handles.covar22_c1, 'Enable','on')    set(handles.covar11_c2, 'Enable','inactive','String',get(handles.covar11_c1,'String'))    set(handles.covar12_c2, 'Enable','inactive','String',get(handles.covar12_c1,'String'))    set(handles.covar21_c2, 'Enable','inactive','String',get(handles.covar21_c1,'String'))    set(handles.covar22_c2, 'Enable','inactive','String',get(handles.covar22_c1,'String'))  endif val == 3    case3 = {'Case 3: Features are statistically dependent and',        'Covariance Matrix are different for both the classes'};    outcase3 = textwrap(handles.case_text,case3);    set(handles.case_text, 'String', outcase3)    set(handles.covar12_c1, 'Enable','on')    set(handles.covar21_c1, 'Enable','on');    set(handles.covar22_c1, 'Enable','on')    set(handles.covar11_c2, 'Enable','on');    set(handles.covar12_c2, 'Enable','on')    set(handles.covar21_c2, 'Enable','on');    set(handles.covar22_c2, 'Enable','on')  end% --------------------------------------------------------------------function varargout = figure1_CloseRequestFcn(h, eventdata, handles, varargin)selection = questdlg('Do you want to exit GUI?',...    'Close Request Function', 'Yes','No','Yes');switch selection,case 'Yes',    delete(gcf)case 'No'    returnend% --------------------------------------------------------------------function varargout = helptext_Callback(h, eventdata, handles, varargin)clcfid = fopen('help_me_GUI.txt','r');F = fread(fid);help_me = char(F')

⌨️ 快捷键说明

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