animrule.m

Package [view]: fuzzy.rar
Upload User: hnchenxi
Upload Date: 2008-11-02
Package Size: 1083k
Code Size: 2k
Category: AI-NN-PR
Development Platform: Matlab
  1. function [sys, x0] = animrule(t, x, u, flag, fismatrix)
  2. %ANIMRULE call fuzzy rule viewer during simulation.
  3. %   Animation of fuzzy rules during simulation. This function calls ruleview 
  4. %   during simulation to show how rules are fired. 
  5. %
  6. %   Animation S-function: animrule.m
  7. %   SIMULINK file: fuzblkrule.mdl 
  8. %
  9. %   Type sltankrule in MATLAB command line to see a demo.
  10. %   Kelly Liu 10-6-97
  11. %   Copyright 1994-2002 The MathWorks, Inc. 
  12. %   $Revision: 1.8 $  $Date: 2002/04/02 21:25:41 $
  13. if ~isempty(flag) & flag == 2,
  14.     xx=allchild(0);
  15.     figN=[];
  16.     for i=1:length(xx)
  17.        name=get(xx(i), 'name');
  18.        if length(name)>11 & strcmp(name(1:12), 'Rule Viewer:');
  19.           figN=xx(i);
  20.           break;
  21.        end
  22.     end
  23.     if ~isempty(figN)
  24.       set(figN, 'HandleVisibi', 'on');
  25.       ruleview('#simulink', u, figN);
  26.       set(figN, 'HandleVisibi', 'callback');
  27.     end
  28.     sys = [];
  29.     drawnow;    % for invoking with rk45, etc.
  30. elseif ~isempty(flag) & flag == 9,   % When simulation stops ...
  31.     % ====== change labels of standard UI controls
  32. elseif ~isempty(flag) & flag == 0,
  33.     % ====== find animation block & figure
  34.     name=fismatrix.name;
  35.     figNum=findobj(allchild(0), 'name', ['Rule Viewer: ' name]);
  36.     if isempty(figNum)
  37.      ruleview(fismatrix);
  38.      figNum=findobj(allchild(0), 'name', ['Rule Viewer: ' name]);
  39.      position=get(figNum, 'Position');
  40.      set(figNum, 'Position', position+[.2 -.2 0 0]);
  41.     else
  42.      figure(figNum);
  43.     end
  44.     sys = [0 0 0 -1 0 0];
  45. elseif nargin == 5, % for callbacks of GUI
  46. end