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

📄 evalfis.m

📁 模糊控制工具箱,很好用的,有相应的说明文件,希望对大家有用!
💻 M
字号:
function [output,IRR,ORR,ARR] = evalfis(input, fis, numofpoints);
% EVALFIS    Perform fuzzy inference calculations.
%
%   Y = EVALFIS(U,FIS) simulates the Fuzzy Inference System FIS for the 
%   input data U and returns the output data Y.  For a system with N 
%   input variables and L output variables, 
%      * U is a M-by-N matrix, each row being a particular input vector
%      * Y is M-by-L matrix, each row being a particular output vector.
%   
%   Y = EVALFIS(U,FIS,NPts) further specifies number of sample points
%   on which to evaluate the membership functions over the input or output
%   range. If this argument is not used, the default value is 101 points.
%
%   [Y,IRR,ORR,ARR] = EVALFIS(U,FIS) also returns the following range 
%   variables when U is a row vector (only one set of inputs is applied):
%      * IRR: the result of evaluating the input values through the membership
%        functions. This is a matrix of size Nr-by-N, where Nr is the number
%        of rules, and N is the number of input variables.
%      * ORR: the result of evaluating the output values through the membership
%        functions. This is a matrix of size NPts-by-Nr*L. The first Nr
%        columns of this matrix correspond to the first output, the next Nr
%        columns correspond to the second output, and so forth.
%      * ARR: the NPts-by-L matrix of the aggregate values sampled at NPts
%        along the output range for each output.
%
%   Example:
%       fis = readfis('tipper');
%       out = evalfis([2 1; 4 9],fis)
%   This generates the response
%       out =
%   	   7.0169
%   	  19.6810
%
%   See also READFIS, RULEVIEW, GENSURF.

%   Kelly Liu, 10-10-97.
%   Copyright 1994-2005 The MathWorks, Inc.
%   $Revision: 1.22.2.4 $  $Date: 2005/06/27 22:36:51 $

ni = nargin;
if ni<2
   disp('Need at least two inputs');
   output=[];
   IRR=[];
   ORR=[];
   ARR=[];
   return
end

% Check inputs
if ~isfis(fis)
   error('The second argument must be a FIS structure.')
elseif strcmpi(fis.type,'sugeno') & ~strcmpi(fis.impMethod,'prod')
   warning('Implication method should be "prod" for Sugeno systems.')
end
[M,N] = size(input);
Nin = length(fis.input);
if M==1 & N==1,
   input = input(:,ones(1,Nin));
elseif M==Nin & N~=Nin,
   input = input.';
elseif N~=Nin
   error(sprintf('%s\n%s',...
      'The first argument should have as many columns as input variables and',...
      'as many rows as independent sets of input values.'))
end

% Check the fis for empty values
checkfis(fis);

% Issue warning if inputs out of range
inRange = getfis(fis,'inRange');
InputMin = min(input,[],1);
InputMax = max(input,[],1);
if any(InputMin(:)<inRange(:,1)) | any(InputMax(:)>inRange(:,2))
   warning('Some input values are outside of the specified input range.')
end

% Compute output
if ni==2
   numofpoints = 101;
end

[output,IRR,ORR,ARR] = evalfismex(input, fis, numofpoints);


⌨️ 快捷键说明

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