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

📄 createdata.m

📁 SVM matlab GUI可视化界面 直观形象 代码解释比较详细 对GUI学习和svm学习都有帮助
💻 M
📖 第 1 页 / 共 2 页
字号:
   case 'normal'
      % === 左击鼠标=============
      % 创建新数据

      if ~strcmpi(get(hobject,'Tag'),'point'),

         % 设立保存标志
         h.saved=0;
         set(hfigure,'UserData',h);

         % 获取数据集是第1类,还是第2类的信息
         class=get(h.puclass,'Value');

         % 创建新数据点后,更新数据集
         sets.K(class)=sets.K(class)+1;
         sets.I(sum(sets.K))=class;

         switch h.settype
         case 'finite'
            sets.X=[sets.X,[pointer(1,1);pointer(1,2)]];
            line(pointer(1,1),pointer(1,2), ...
               'LineStyle','none', ...
               'Marker','.', ...
               'Color',XCOLORS(mod(class-1,MAXCOLOR)+1), ...
               'MarkerSize',25, ...
               'ButtonDownFcn','createdata(''click'',gcf)',...
               'EraseMode','none',...
               'Tag','point');
            % 将数据集传递给坐标轴对象axes1
            set(h.axes1,'UserData',sets);
         end

      end % if ~strcmpi(


   case 'alt'
      % ===右击鼠标 ===
      % 擦除数据点

      if strcmpi(get(hobject,'tag'),'point')==1,

         % 对象是数据点
         pixelpos=[get(hobject,'XData');get(hobject,'YData')];

         K=sum(sets.K);
         for i=1:K,
            pos=sets.X(:,i);

            if pixelpos==pos,
               % 更新数据集
               sets.K(sets.I(i))=sets.K(sets.I(i))-1;
               sets.I=[sets.I(:,1:i-1),sets.I(:,i+1:K)];
               sets.X=[sets.X(:,1:i-1),sets.X(:,i+1:K)];
               set(h.axes1,'UserData',sets);

               % 擦除数据点
               set(hobject,'EraseMode','normal');
               delete(hobject);

               % 设置保存标志
               h.saved=0;
               set(hfigure,'UserData',h);

               break;
            end % if pixelpos
         end % for

      
      end % if strcmpi(get(hpixel,...

   end % switch lower(get...

case 'load'
   % == 产生标准的装载文件窗口====================================
   % 从文件装载数据集,并显示在坐标系中
   hfigure=varargin{1};
   h=get(hfigure,'UserData');

   % 获取数据集结构体
   sets=get(h.axes1,'UserData');

   loadit=1;

   if h.saved==0,
      answer=questdlg(...
         '数据已经被改动,是否要继续此操作?',...
         '警告',...
         'Continue','Cancel','Cancel');

      if answer==0 | strcmpi(answer,'Cancel'),
         loadit=0;
      end
   end

   if loadit==1,
      [name,path]=uigetfile('*.mat','Load data set');

      if name ~= 0,
         pathname=strcat(path,name);
         if strcmpi(sets.id, ID_FINITE), a = check2ddata(pathname); end
           
         if a,

            % 保存路径
            file.name=name;
            file.path=path;
            file.pathname=pathname;
            set(h.btsave,'UserData',file);

            oldID=sets.id;
            % 装载数据并保存
            sets=load(file.pathname);
            
            sets.id = oldID;
            sets.I = sets.y;
            sets.N=2;
            for ii=1:max(sets.I),
              sets.K(ii)=length(find(sets.I==ii));
            end
            
            
            set(h.axes1,'UserData',sets);

            % 设置任何可能发生的情况
            h.currpoint=0;
            h.currhandle=0;
            h.saved=1;
            set(hfigure,'UserData',h);

            % 显示在桌面
            createdata('redraw',hfigure);

            % 打印标题即文件名
            titletext=sprintf('File: %s',file.name);
            set(h.title,'String',titletext);

         else
            errordlg('这个文件不包含满足要求的数据。','错误文件','modal');
         end
      end % if name ~= 0,
   end % if loadit==1,


case 'save'
   % == 产生标准的保存文件窗口====================================
   % 准备保存数据集

   % 获取句柄
   hfigure=varargin{1};
   h=get(hfigure,'UserData');

   % 获取数据集
   sets=get(h.axes1,'UserData');

   % 是否需要保存 ?
   if sum(sets.K)~=0,
      % 获取当前文件名
      file=get(h.btsave,'UserData');

      % 产生保存窗口
      [name,path]=uiputfile(file.pathname,'Save file');

      % 检查用户是否按下“关闭”按钮 ?
      if name ~= 0,
         % 保存文件名
         file.name=name;
         file.path=path;
         file.pathname=strcat(path,name);
         set(h.btsave,'UserData',file);

         % 打印标题即文件名
         titletext=sprintf('File: %s',file.name);
         set(h.title,'String',titletext);

         % 删除空的数据集类
         ssets=sets;
         KL=size(sets.K,2);
         NK=sum(sets.K);

         % 保存数据集的属性
         id=sets.id;
         I=sets.I;
         K=sets.K;
         N=sets.N;

         % 删除空的数据集
         i=1;
         while i <= KL,
            if K(i)==0,
               for j=1:NK,
                  if I(j) > i,
                     I(j)=I(j)-1;
                  end
               end

               K=[K(1:i-1),K(i+1:KL)];
               KL=KL-1;
            else
               i=i+1;
            end
         end

         % 将数据集保存到文件
         switch h.settype
         case 'finite'
            X=sets.X;
            y=I;
            save(file.pathname,'X','y');
         
         end

         % 设置保存标志
         h.saved=1;
         set(hfigure,'UserData',h);
      end % if name ~= 0,
   end % if sum(sets.K)~=0,

case 'ok'
    % == 按下“创建完毕”按钮 ===================================================
 
   % 获取句柄
   hfigure=varargin{1};
   h=get(hfigure,'UserData');

   % 是否要关闭对话框?
   closeit=1;

   if h.saved==0,
      % 数据没有保存
      answer=questdlg(...
         '数据已经被改动,是否要保存数据?',...
         '警告',...
         'Save','Don`t save','Cancel','Cancel');

      % 根据用户的选择执行
      if answer ~= 0,
         switch lower(answer)
         case 'save'
            createdata('save',hfigure);
            h=get(hfigure,'UserData');
            closeit=h.saved;
         case 'cancel'
            closeit=0;
         case 'don`t save'
            close(hfigure,hfigure);
            return;
         end

      else
         closeit=0;
      end % if answer~=0,...else

   end % if h.saved==0,

   % 关闭对话框
   if closeit==1,
      % 获取变量的值
      sets=get(h.axes1,'UserData');
      command=get(h.btok,'UserData');
      file=get(h.btsave,'UserData');

      if sum(sets.K)~=0 & size(command,2) > 2,
         feval(command{3},command{4:size(command,2)},file.path,file.name);
      end

      close(hfigure);
   end

   case 'close'
   % == “关闭”按钮 ===================================================

   % 获取句柄
   hfigure=varargin{1};
   h=get(hfigure,'UserData');

   closeit=1;

   % 数据是否被改动 ?
   if h.saved==0,
      % 数据没有保存
      answer=questdlg(...
         '数据已经被改动,确实要关闭吗?',...
         '警告',...
         'Close','Cancel','Cancel');

      % 根据用户的选择执行
      if answer == 0 | strcmpi(answer,'Cancel')==1,
         closeit=0;
      end
   end

   if closeit==1,
      close(hfigure);
   end

case 'info'
   % == 调用 Matlab help  =========================================
   helpwin(mfilename);

end

return;

%========================================    
%定义getaxis函数                                 
function [rect]=getaxis(handle)                                                 
                                                                           
rect=[get(handle,'XLim'),get(handle,'YLim'),get(handle,'ZLim')];                
                                                                                
return; 

%定义setaxis函数
function []=setaxis(handle,rect)                                                
                                                                           
set(handle,'XLim',rect(1:2));                                                   
set(handle,'YLim',rect(3:4));                                                   
                                                                                
if size(rect,2)>=6,                                                             
   set(handle,'ZLim',rect(5:6));                                                
end                                                                             
                                                                                
return;      

⌨️ 快捷键说明

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