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

📄 funtool.m

📁 数学建模的源代码
💻 M
📖 第 1 页 / 共 2 页
字号:
   blanks = '  ';
   set(findobj(figp,'tag','Sf'),'string',[blanks char(f)]);
   
%%%%%%%%%%%%%%%%%%%%%%%%%%  Callback for second row of unary operators.
case 'row2'
   figp = findobj(0,'tag','figp');
   fhndl = findobj(figp,'tag','fobj');
   f = get(fhndl,'UserData');
   x = get(findobj(figp,'tag','xstr'),'UserData');
   a = get(findobj(figp,'tag','aobj'),'UserData');
   figf = findobj(0,'tag','figf');

   switch varargin{1}
     case 'f+a'
       f = f+a;
     case 'f-a'
       f = f-a;
     case 'f*a'
       f = f*a;
     case 'f/a'
       f = f/a;
     case 'f^a'
       f = f^a;
     case 'f(x+a)'
       f = subs(f,sym('x'),sym('x')+a);
     case 'f(x*a)', ...
       f = subs(f,sym('x'),sym('x')*a);
   end

   set(fhndl,'UserData',f);
   ezplot(f,x,figf)
   blanks = '  ';
   set(findobj(figp,'tag','Sf'),'string',[blanks char(f)]);
   
%%%%%%%%%%%%%%%%%%%%%%%%%%  Callback for third row, binary operators.
case 'row3'
   blanks = '  ';

   % Get variables.
   figp = findobj(0,'tag','figp');
   fhndl = findobj(figp,'tag','fobj');
   ghndl = findobj(figp,'tag','gobj');
   f = get(fhndl,'UserData');
   g = get(ghndl,'UserData');
   x = get(findobj(figp,'tag','xstr'),'UserData');
   a = get(findobj(figp,'tag','aobj'),'UserData');
   figf = findobj(0,'tag','figf');
   figg = findobj(0,'tag','figg');

   if strcmp(varargin{1}, 'g=f')
     g = f;
     set(ghndl,'UserData',g);
     ezplot(g,x,figg)
     set(findobj(figp,'tag','Sg'),'string',[blanks char(g)]);

   elseif strcmp(varargin{1}, 'swap')
     h = f; f = g; g = h;
     set(fhndl,'UserData',f);
     ezplot(f,x,figf)
     set(findobj(figp,'tag','Sf'),'string',[blanks char(f)]);
     set(ghndl,'UserData',g);
     ezplot(g,x,figg)
     set(findobj(figp,'tag','Sg'),'string',[blanks char(g)]);

   else
     switch varargin{1}
       case 'f+g'
         f = f+g;
       case 'f-g'
         f = f-g; 
       case 'f*g'
         f = f*g; 
       case 'f/g'
         f = f/g; 
       case 'f(g)'
         f = compose(f,g); 
     end

     set(fhndl,'UserData',f);
     ezplot(f,x,figf)
     set(findobj(figp,'tag','Sf'),'string',[blanks char(f)]);
   end

%%%%%%%%%%%%%%%%%%%%%%%%%% Callback for F's edit text box.
case 'Sfcallback'
   figp = findobj(0,'tag','figp');
   f = sym(get(gco,'string'));
   fhndl = findobj(figp,'tag','fobj');
   set(fhndl,'UserData',f);
   x = get(findobj(figp,'tag','xstr'),'UserData');
   figf = findobj(0,'tag','figf');
   ezplot(f,x,figf)

%%%%%%%%%%%%%%%%%%%%%%%%%% Callback for G's edit text box.
case 'Sgcallback'
   figp = findobj(0,'tag','figp');
   g = sym(get(gco,'string'));
   ghndl = findobj(figp,'tag','gobj');
   set(ghndl,'UserData',g);
   x = get(findobj(figp,'tag','xstr'),'UserData');
   figg = findobj(0,'tag','figg');
   ezplot(g,x,figg)

%%%%%%%%%%%%%%%%%%%%%%%%%% Callback for A's edit text box.
case 'Sacallback'
   a = sym(get(gco,'String'));
   set(findobj(gcf,'tag','aobj'),'UserData',a);

%%%%%%%%%%%%%%%%%%%%%%%%%% Callback for X's edit text box.
case 'Sxcallback'

   figp = findobj(0,'tag','figp');
   x = get(gco,'String');

   % add brackets if needed
   if isempty(x=='['),
      x = ['[' x ']'];
      blanks = '  ';
      set(gco,'string',[blanks x]),
   end;
   set(findobj(figp,'tag','xstr'),'UserData',x);

   fhndl = findobj(figp,'tag','fobj');
   ghndl = findobj(figp,'tag','gobj');
   f = get(fhndl,'UserData');
   g = get(ghndl,'UserData');
   a = get(findobj(figp,'tag','aobj'),'UserData');
   figf = findobj(0,'tag','figf');
   figg = findobj(0,'tag','figg');
   
   ezplot(f,x,figf)
   ezplot(g,x,figg)

%%%%%%%%%%%%%%%%%%%%%%%%%% Callback for Insert button.
case 'Insert'
   f = get(findobj(gcf,'tag','fobj'),'UserData');
   x = get(findobj(gcf,'tag','xstr'),'UserData');
   fxlist = get(gcf,'UserData');
   fxlist = str2mat(fxlist,[char(f) ';  ' x]);
   set(gcf,'UserData',fxlist);

%%%%%%%%%%%%%%%%%%%%%%%%%% Callback for Cycle button.
case 'Cycle'

   % Get variables.
   figp = gcf;
   figf = findobj(0,'tag','figf');
   fxlist = get(figp,'UserData');

   fx = fxlist(1,:); 
   fx(find(fx==' ')) = [];
   k = find(fx == ';'); 
   fstr = fx(1:k-1); f = sym(fstr); 
   set(findobj(figp,'tag','fobj'),'UserData',f);
   x = fx(k+1:length(fx)); 
   set(findobj(figp,'tag','xstr'),'UserData',x);

   blanks = '  ';
   set(findobj(figp,'tag','Sx'),'string',[blanks x]); 
   set(findobj(figp,'tag','Sf'),'string',[blanks fstr]); 
   ezplot(f,x,figf);
   k = [2:size(fxlist,1),1]; 
   fxlist = fxlist(k,:);
   set(figp,'UserData',fxlist);

%%%%%%%%%%%%%%%%%%%%%%%%%% Callback for Delete button.
case 'Delete'

   % Get variables.
   figp = gcf;
   f = get(findobj(figp,'tag','fobj'),'UserData');
   x = get(findobj(figp,'tag','xstr'),'UserData');
   fxlist = get(figp,'UserData');

   fx = [char(f) ';' x]; 
   fx(find(fx==' ')) = [];
   for k = 1:size(fxlist,1), 
      element = fxlist(k,:);
      element(find(element==' ')) = [];
      if strcmp(fx,element)
        fxlist(k,:) = []; 
        break 
      end 
   end; 
   if isempty(fxlist), fxlist = '0-0;  [0,1]'; end

   set(figp,'UserData',fxlist);

%%%%%%%%%%%%%%%%%%%%%%%%%% Callback for Reset button.
case 'Reset'
   blanks = '  ';

   % Get variables.
   figp = gcf;
   figf = findobj(0,'tag','figf');
   figg = findobj(0,'tag','figg');
   init = get(findobj(figp,'tag','reset'),'UserData');

   set(findobj(figp,'tag','fobj'),'UserData',sym(init.f));
   set(findobj(figp,'tag','Sf'),'String',[blanks init.f]);
   ezplot(sym(init.f),init.x,figf);

   set(findobj(figp,'tag','gobj'),'UserData',sym(init.g));
   set(findobj(figp,'tag','Sg'),'String',[blanks init.g]);
   ezplot(sym(init.g),init.x,figg);

   set(findobj(figp,'tag','xstr'),'UserData',init.x);
   set(findobj(figp,'tag','Sx'),'string',[blanks init.x]);

   set(findobj(figp,'tag','aobj'),'UserData',sym(init.a));
   set(findobj(figp,'tag','Sa'),'string',[blanks init.a]);

   set(figp,'UserData',init.l);

   % Reset all buttons to default bkgd color.
   set(findobj(figp,'Style','pushbutton'),'BackgroundColor','default');

%%%%%%%%%%%%%%%%%%%%%%%%%% Callback for Close button.
case 'close'
   close(findobj(0,'tag','figf')); 
   close(findobj(0,'tag','figg')); 
   close(findobj(0,'tag','figp')); 

%%%%%%%%%%%%%%%%%%%%%%%%%% Callback for Demo button.
case 'Demo'

   % "B" is the vector of button handles in the control panel.
   % "prog" is a "program" consisting of button codes.

   prog = {'Reset','f/a','int f','f + g','1/f', ...
           'int f','finv','int f','df/dx','num f'};
   B = findobj(gcf,'Style','pushbutton'); 
   for k = 1: length(prog)
      currB = findobj(B,'String',prog{k});
      set(currB,'BackgroundColor','white');
      eval(get(currB,'Callback'));
      pause(1)
      set(currB,'BackgroundColor','default');
   end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end % switch statement for callbacks
end     % end of FUNTOOL

⌨️ 快捷键说明

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