亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? evalfis1.m

?? 模糊控制工具箱,很好用的,有相應(yīng)的說明文件,希望對大家有用!
?? M
字號:
function [output_stack,IRR,ORR,ARR] = evalfis(input_stack, fismatrix);
% EVALFIS Evaluation of a fuzzy inference system.
%   OUTPUT_STACK = EVALFIS(INPUT_STACK, FISMATRIX) computes the
%   output of a fuzzy inference system specified by FISMATRIX.
%   INPUT_STACK can be a vector specifying the input vector, or
%   a matrix where each row specifies an input vector.
%   OUTPUT_STACK is a stack of output (row) vectors.
%
%   For example:
%
%       [xx, yy] = meshgrid(-5:5);
%       input = [xx(:) yy(:)];
%       fismat = readfis('mam21');
%       out = evalfis(input, fismat);
%       surf(xx, yy, reshape(out, 11, 11))
%       title('evalfis')

%   Roger Jang, 11-19-93, 1-17-94, 9-29-94.
%   Copyright 1994-2002 The MathWorks, Inc. 
%   $Revision: 1.7 $  $Date: 2002/04/14 22:22:27 $

global GLOBAL_FIS_MATRIX
global FIS_NAME FIS_TYPE IN_N OUT_N IN_MF_N OUT_MF_N RULE_N
global AND_METHOD OR_METHOD IMP_METHOD AGG_METHOD DEFUZZ_METHOD
global BOUND IN_MF_TYPE OUT_MF_TYPE RULE_LIST AND_OR RULE_WEIGHT
global IN_PARAM OUT_PARAM
global OUT_TEMPLATE_MF OUT_MF QUALIFIED_OUT_MF OVERALL_OUT_MF

point_n = 101;
mf_para_n = 4;

initialization = 1;
% Check if initialization necessary.
if (size(fismatrix, 1) == size(GLOBAL_FIS_MATRIX, 1)),
if (size(fismatrix, 2) == size(GLOBAL_FIS_MATRIX, 2)),
if ~isequal(fismatrix,GLOBAL_FIS_MATRIX),
    initialization = 0;
end
end
end

% Unpack data and initialize global variables.
if initialization,
    GLOBAL_FIS_MATRIX = fismatrix;
    FIS_NAME =  fismatrix.name;  
    FIS_TYPE =  fismatrix.type;
    FIS_TYPE(find(FIS_TYPE == 0)) = [];
    IN_N =      length(fismatrix.input);
    OUT_N =     length(fismatrix.output);
    for i=1:IN_N
     IN_MF_N(i) =   length(fismatrix.input(i).mf);
    end
    for i=1:OUT_N
     OUT_MF_N(i) =  length(fismatrix.output(i).mf);
    end

    RULE_N =    length(fismatrix.rule);

    AND_METHOD =    fismatrix.andMethod;
    OR_METHOD =     fismatrix.orMethod;
    IMP_METHOD =    fismatrix.impMethod;
    AGG_METHOD =    fismatrix.aggMethod;
    DEFUZZ_METHOD = fismatrix.defuzzMethod;
    AND_METHOD(find(AND_METHOD == 0)) = [];
    OR_METHOD(find(OR_METHOD == 0)) = [];
    IMP_METHOD(find(IMP_METHOD == 0)) = [];
    AGG_METHOD(find(AGG_METHOD == 0)) = [];
    DEFUZZ_METHOD(find(DEFUZZ_METHOD == 0)) = [];
    IN_MF_TYPE=[];
    for i=1:IN_N
         in_bound(i, 1:2)=fismatrix.input(i).range;
         for j=1:length(fismatrix.input(i).mf)
           IN_MF_TYPE=strvcat(IN_MF_TYPE, fismatrix.input(i).mf(j).type);
         end
    end
    for i=1:OUT_N
         out_bound(i, 1:2)=fismatrix.output(i).range;
         for j=1:length(fismatrix.output(i).mf)
           OUT_MF_TYPE=strvcat(OUT_MF_TYPE, fismatrix.output(i).mf(j).type);
         end
    end
    
    BOUND =     [in_bound; out_bound];

    
%%%    tmp =       getfis(fismatrix, 'rulelist');
%%%    for i=1:length(fismatrix.rulenew)
%%%      RULE_WEIGHT(i,:) =   fismatrix.rulenew(i).weight;
%%%      AND_OR(i,:) =        fismatrix.rulenew(i).connective;
%%%      RULE_LIST(i,:) = fismatrix.rulenew(i).weight;

    tmp =       getfis(fismatrix, 'rulelist');
    RULE_WEIGHT =   tmp(:, IN_N+OUT_N+1);
    AND_OR =        tmp(:, IN_N+OUT_N+2);
    RULE_LIST = tmp(:, 1:IN_N+OUT_N);

    
    k=1;
    totalInputMFs=sum(IN_MF_N);
    totalOutputMFs=sum(OUT_MF_N);
    IN_PARAM=zeros(totalInputMFs, 4);
    for i=1:IN_N
       for j=1:length(fismatrix.input(i).mf)
          temp=fismatrix.input(i).mf(j).params;
          IN_PARAM(k,1:length(temp))=temp;
          k=k+1;
       end
    end
    k=1;
    OUT_PARAM=zeros(totalOutputMFs, 4);
    for i=1:OUT_N
       for j=1:length(fismatrix.output(i).mf)
          temp=fismatrix.output(i).mf(j).params;
          OUT_PARAM(k,1:length(temp))=temp;
          k=k+1;
       end
    end
    

    if strcmp(FIS_TYPE, 'sugeno'),
        OUT_PARAM = OUT_PARAM(:, 1:IN_N+1);
    elseif strcmp(FIS_TYPE, 'mamdani'),
        OUT_PARAM = OUT_PARAM(:, 1:mf_para_n);
    else
        error('Unknown FIS type!');
    end

    if strcmp(FIS_TYPE, 'mamdani'),
        % Compute OUT_TEMPLATE_MF
        OUT_TEMPLATE_MF = zeros(sum(OUT_MF_N), point_n);
        cum_mf = cumsum(OUT_MF_N);
        for i = 1:sum(OUT_MF_N),
            tmp = find((cum_mf-i) >= 0);
            output_index = tmp(1);      % index for output
            OUT_TEMPLATE_MF(i, :) = ...
                evalmf(linspace(BOUND(IN_N+output_index,1), ...
                BOUND(IN_N+output_index,2), point_n), ...
                OUT_PARAM(i, :), deblank(OUT_MF_TYPE(i, :)));
        end

        % Reorder to fill OUT_MF, an (RULE_N X point_n*OUT_N) matrix.
        OUT_MF = zeros(RULE_N, point_n*OUT_N);
        for i = 1:RULE_N,
            for j = 1:OUT_N,
                mf_index = RULE_LIST(i, IN_N+j);
                index = sum(OUT_MF_N(1:j-1)) + abs(mf_index);
                if mf_index > 0,    % regular MF
                    OUT_MF(i, (j-1)*point_n+1:j*point_n) = ...
                        OUT_TEMPLATE_MF(index, :); 
                elseif mf_index < 0,% Linguistic hedge "NOT"
                    OUT_MF(i, (j-1)*point_n+1:j*point_n) = ...
                        1 - OUT_TEMPLATE_MF(index, :); 
                else                % Don't care (MF index == 0)
                    OUT_MF(i, (j-1)*point_n+1:j*point_n) = ...
                        ones(1, point_n);
                end
            end
        end

        % Allocate other matrices
        QUALIFIED_OUT_MF = zeros(RULE_N, point_n*OUT_N);
        OVERALL_OUT_MF = zeros(1, point_n*OUT_N);
    end
%   fprintf('Global variables for %s FIS are initialized\n', FIS_NAME);
end
% End of initialization

% Error checking for input stack
m = size(input_stack, 1);
n = size(input_stack, 2);
if ~((n >= IN_N) | ((n == 1) & (m >= IN_N))),
    fprintf('The input stack is of size %dx%d,', m, n);
    fprintf('while expected input vector size is %d.\n', IN_N);
    error('Exiting ...');
end
if ((n == 1) & (m == IN_N))
    data_n = 1;
    input_stack = input_stack';
else
    data_n = m;
end

% Allocate output stack
output_stack = zeros(data_n, OUT_N);

% Iteration through each row of input stack

for kkk = 1:data_n,
input = input_stack(kkk, :);

% Find in_template_mf_value
in_template_mf_value = zeros(sum(IN_MF_N), 1);
cum_mf = cumsum(IN_MF_N);
for i = 1:sum(IN_MF_N),
    tmp = find((cum_mf-i) >= 0);
    input_index = tmp(1);
    in_template_mf_value(i) = ...
    evalmf(input(input_index), IN_PARAM(i, :), deblank(IN_MF_TYPE(i, :)));
end

% Reordering to fill in_mf_value, which is an (RULE_N X IN_N) matrix.
index = ones(RULE_N, 1)*cumsum([0 IN_MF_N(1:IN_N-1)]) +...
    abs(RULE_LIST(:, 1:IN_N));
zero_index = find(index == 0);  % index for don't care MF
index(zero_index) = ones(size(zero_index)); % temp. setting for easy indexing
in_mf_value = reshape(in_template_mf_value(index), RULE_N, IN_N);

% Take care of don't care (MF index is zero)
% tmp1 is the position index for zeor mf index in a AND rule
tmp1 = find(((AND_OR(:, ones(IN_N, 1))==1).*(RULE_LIST(:, 1:IN_N)==0))==1);
in_mf_value(tmp1) = ones(size(tmp1));% take care of zero index
% tmp2 is the position index for zeor mf index in a OR rule
tmp2 = find(((AND_OR(:, ones(IN_N, 1))==2).*(RULE_LIST(:, 1:IN_N)==0))==1);
in_mf_value(tmp2) = zeros(size(tmp2));% take care of zero index

% Take care of linguistic hedge NOT (MF index is negative) 
neg_index = find(RULE_LIST(:, 1:IN_N) < 0);
in_mf_value(neg_index) = 1 - in_mf_value(neg_index);
%disp(in_mf_value);

% Find the firing strengths
% AND_METHOD = 'min' or 'prod'; which is used as function name too
% OR_METHOD = 'max' or 'probor'; which is used as function name too
firing_strength = zeros(RULE_N, 1);
and_index = find(AND_OR == 1);
or_index = 1:RULE_N;
or_index(and_index) = [];
if IN_N ~= 1,
    firing_strength(and_index) = feval(AND_METHOD, in_mf_value(and_index, :)')';
    firing_strength(or_index) = feval(OR_METHOD, in_mf_value(or_index, :)')';
else
    firing_strength = in_mf_value;
end
%disp(firing_strength);

% Recalculate firing strengths scaled by rule weights
firing_strength = firing_strength.*RULE_WEIGHT;

% Find output
if strcmp(FIS_TYPE, 'sugeno'),
    template_output = OUT_PARAM*[input(:); 1]; % Output for template

    % Reordering according to the output part of RULE_LIST; 
    % Negative MF index will becomes positive
    index = ones(RULE_N, 1)*cumsum([0 OUT_MF_N(1:OUT_N-1)]) +...
        abs(RULE_LIST(:, IN_N+1:IN_N+OUT_N));
    zero_index = find(index == 0);
    index(zero_index) = ones(zero_index);   % temp. setting for easy indexing
    rule_output = reshape(template_output(index), RULE_N, OUT_N);
    zero_index = find(RULE_LIST(:, IN_N+1:IN_N+OUT_N) == 0);
    rule_output(zero_index) = zeros(size(zero_index));  % take care of zero index
    sum_firing_strength = sum(firing_strength);

    if sum_firing_strength == 0
        fprintf('input = [');
        for i=1:IN_N,
            fprintf('%f ', input(i));
        end
        fprintf(']\n');
        error('Total firing strength is zero!');
    end

    if strcmp(DEFUZZ_METHOD, 'wtaver'),
        output_stack(kkk, :) = firing_strength'*rule_output/sum_firing_strength;
    elseif strcmp(DEFUZZ_METHOD, 'wtsum'),
        output_stack(kkk, :) = firing_strength'*rule_output;
    else
        error('Unknown defuzzification method!');
    end

elseif strcmp(FIS_TYPE, 'mamdani'),
    % Transform OUT_MF to QUALIFIED_OUT_MF
    % Duplicate firing_strength.
    tmp = firing_strength(:, ones(1, point_n*OUT_N));

    if strcmp(IMP_METHOD, 'prod'),      % IMP_METHOD == 'prod'
        QUALIFIED_OUT_MF = tmp.*OUT_MF;
    elseif strcmp(IMP_METHOD, 'min'),   % IMP_METHOD == 'min'
        QUALIFIED_OUT_MF = feval(IMP_METHOD, tmp, OUT_MF);
    else    % IMP_METHOD is user-defined
        tmp1 = feval(IMP_METHOD, [tmp(:)'; OUT_MF(:)']);
        QUALIFIED_OUT_MF = reshape(tmp1, RULE_N, point_n*OUT_N);
    end

    % AGG_METHOD = 'sum' or 'max' or 'probor' or user-defined
    OVERALL_OUT_MF = feval(AGG_METHOD, QUALIFIED_OUT_MF);

    for i = 1:OUT_N;
        output_stack(kkk, i) = defuzz( ...
        linspace(BOUND(IN_N+i,1), BOUND(IN_N+i,2), point_n), ...
            OVERALL_OUT_MF(1, (i-1)*point_n+1:i*point_n), ...
            DEFUZZ_METHOD);
    end
else
    fprintf('fis_type = %d\n', FIS_TYPE);
    error('Unknown FIS type!');
end
end

if nargout >= 2, IRR = in_mf_value; end 

if strcmp(FIS_TYPE, 'sugeno'),
    if nargout >= 3,
        ORR = rule_output;
    end
    if nargout >= 4,
        ARR = firing_strength(:, ones(1,OUT_N));
    end
else
    if nargout >= 3,
        ORR = [];
        for iii = 1:OUT_N,
            ORR = [ORR; QUALIFIED_OUT_MF(:,(iii-1)*point_n+1:iii*point_n)];
        end
        ORR = ORR';
    end
    if nargout >= 4,
        ARR = reshape(OVERALL_OUT_MF, point_n, OUT_N);
    end
end

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久精品app| 欧美极品xxx| 色欧美片视频在线观看| 国产·精品毛片| 国产精品一色哟哟哟| 国内精品国产成人国产三级粉色 | 亚洲图片欧美激情| 中文字幕制服丝袜一区二区三区 | 久久久久成人黄色影片| 精品国产sm最大网站| 精品美女一区二区三区| 欧美成人一区二区| wwwwww.欧美系列| 国产亚洲综合av| 中文字幕永久在线不卡| 1024成人网| 亚洲女人****多毛耸耸8| 亚洲综合999| 香蕉成人啪国产精品视频综合网| 午夜精品在线看| 蜜臀va亚洲va欧美va天堂| 久久99热这里只有精品| 精品在线亚洲视频| 国产盗摄一区二区三区| 成人性生交大片免费看中文网站| www.亚洲在线| 欧美三区免费完整视频在线观看| 欧美电影一区二区三区| 日韩精品一区二区三区蜜臀| 国产亚洲va综合人人澡精品| 最新热久久免费视频| 亚洲午夜免费电影| 麻豆精品一二三| 国产成人免费在线| 色综合亚洲欧洲| 欧美一级免费观看| 国产三级精品三级在线专区| 亚洲欧美电影院| 美女性感视频久久| 福利一区二区在线| 欧美日韩亚洲国产综合| 精品国产一区二区三区久久久蜜月 | 国产欧美一区二区三区鸳鸯浴 | 日产精品久久久久久久性色| 国产麻豆一精品一av一免费| 97久久精品人人做人人爽| 欧美日韩精品电影| 国产午夜精品一区二区三区四区| 亚洲免费在线播放| 久久成人免费网| 97久久精品人人做人人爽| 正在播放亚洲一区| 国产精品久久777777| 日韩av网站免费在线| kk眼镜猥琐国模调教系列一区二区| 欧美自拍偷拍午夜视频| 久久久久久免费网| 亚洲电影视频在线| 成人午夜短视频| 欧美一区二区免费视频| 亚洲视频每日更新| 韩国成人在线视频| 欧美撒尿777hd撒尿| 欧美国产1区2区| 免费看日韩a级影片| 91碰在线视频| 国产午夜精品一区二区三区视频 | 亚洲国产精品自拍| 国产成人综合亚洲网站| 91精品国产乱| 一区二区成人在线观看| 成人在线一区二区三区| 欧美一级片免费看| 亚洲一区二区三区四区的| 精品卡一卡二卡三卡四在线| 国产欧美日本一区视频| 免费av网站大全久久| 在线亚洲免费视频| 国产精品电影院| 九九**精品视频免费播放| 精品视频999| 一区二区三区在线看| 成人激情免费电影网址| 久久久久国色av免费看影院| 日本va欧美va瓶| 欧美撒尿777hd撒尿| 亚洲激情自拍偷拍| 97精品国产露脸对白| 中文字幕乱码久久午夜不卡| 国内外成人在线视频| 欧美大片日本大片免费观看| 天天色综合成人网| 欧美久久久久久蜜桃| 亚洲一区二区三区自拍| 91福利精品视频| 亚洲另类中文字| 91视频精品在这里| 亚洲欧洲韩国日本视频| 国产成人精品亚洲777人妖| www成人在线观看| 国产麻豆精品一区二区| 久久一区二区三区国产精品| 久久成人免费电影| 欧美精品一区二区三区很污很色的 | 亚洲a一区二区| 欧美日韩一区精品| 亚洲一卡二卡三卡四卡无卡久久| 一本色道a无线码一区v| 亚洲激情成人在线| 在线观看亚洲精品视频| 亚洲国产美国国产综合一区二区| 91福利视频在线| 亚洲午夜精品网| **欧美大码日韩| 在线中文字幕一区| 午夜精品爽啪视频| 欧美一级精品在线| 国产美女视频91| 国产欧美视频一区二区| 99这里只有精品| 曰韩精品一区二区| 欧美精品色综合| 久久国产尿小便嘘嘘尿| 国产午夜精品理论片a级大结局| 国产成人福利片| 亚洲欧美激情小说另类| 欧美日韩国产高清一区二区 | 欧美人伦禁忌dvd放荡欲情| 日韩一区精品视频| 2023国产精品| www.亚洲人| 亚洲电影在线免费观看| 日韩一区二区三区三四区视频在线观看 | 欧洲精品一区二区三区在线观看| 午夜精品一区二区三区电影天堂| 欧美一区二区三区人| 国产精品综合网| 一区二区三区波多野结衣在线观看 | 欧美揉bbbbb揉bbbbb| 蜜桃视频一区二区三区 | 国产在线观看免费一区| 国产精品蜜臀在线观看| 欧美午夜影院一区| 国产自产高清不卡| 丰满少妇在线播放bd日韩电影| 国产精品高潮久久久久无| 欧美在线短视频| 国产一区二区福利| 一个色在线综合| 日韩欧美国产1| 色综合中文综合网| 亚洲在线观看免费| 精品国产制服丝袜高跟| 91啪在线观看| 久久激情五月激情| 一区二区三区中文免费| 精品日韩99亚洲| 一本大道久久a久久综合| 蜜臀av一级做a爰片久久| 国产精品福利影院| 日韩久久久精品| 色香色香欲天天天影视综合网| 老司机午夜精品| 亚洲一区二区三区四区不卡| 久久久久久久综合日本| 欧美日韩精品综合在线| 成人av在线一区二区三区| 日本va欧美va欧美va精品| 亚洲欧洲99久久| 久久久无码精品亚洲日韩按摩| 欧美性色黄大片| 99视频在线精品| 国产曰批免费观看久久久| 午夜免费欧美电影| 亚洲欧美一区二区三区国产精品| 日韩欧美综合一区| 在线观看日产精品| 成人精品免费网站| 国产麻豆精品一区二区| 色成年激情久久综合| 国产在线精品一区在线观看麻豆| 亚洲成人午夜影院| 亚洲精品ww久久久久久p站| 欧美激情中文字幕| 精品国产免费久久| 91麻豆精品国产91久久久| 91黄视频在线| 99视频在线精品| 不卡在线视频中文字幕| 国产美女精品人人做人人爽| 久久精品国产99| 秋霞午夜av一区二区三区| 亚洲一区二区三区国产| 国产精品国模大尺度视频| 精品国产99国产精品| 欧美一区二区三区日韩| 欧美精品一二三| 91精品午夜视频| 欧美一区二区在线播放| 91精品麻豆日日躁夜夜躁|