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

📄 nefbnder.m

📁 模糊神经网络采用matlab编程 o install NEFCON follow these steps: 1. Unpack the tar file NEFCON.TAR into your MA
💻 M
字号:
function ferr = nefbnder(input, bound) 
%NEFBNDER Error function (using bounds) for NEFCON
% Parameters:
%   input(1) dx     (P) 
%   input(2) dx'    (D) 
%   input(3) F(dx)  (I) 
%   bound(1) signal 
%   bound(2) upper bound 
%   bound(3) lower bound 
%   bound(4) system output 
%   bound(5) system output derivative 
%
% See also NEFGUI and NEFCON.  
   
% Author: Andreas Nuernberger, TU Braunschweig, August 1996; a.nuernberger@tu-bs.de
%         contact: Ludger Merz, DASA-Airbus GmbH, Hamburg; ludger.merz@airbus.de
 
global NEFCON_STAT 
 
global NEFCON_BNDFIS 
 
SCALE_DXDT = 0.5;
SCALE_DX   = 1;

if bound == [] 
    ferr = input(1); 
	disp('NEFBNDER: No bounds defined!');
else 
    if NEFCON_BNDFIS == [] 
        [NEFCON_BNDFIS, errorStr]= readfis('bnderr.fis');  
        if NEFCON_BNDFIS == [],  
            error(['Could not load bound error fismatrix bnderr.fis.\n' errorStr]);  
        end  
    end
 
    if NEFCON_STAT < 4 
	    % error during rulelearning (input(1) because of noise)
        deriv = max(-1, min(bound(5)*SCALE_DXDT,1));
        if bound(4) > bound(1)		% greater than signal
                %dx   = bound(1)-bound(4);
                dx = input(1)*SCALE_DX;
                dx = max(-1, min(dx,1));
                ferr = evalfis([dx deriv], NEFCON_BNDFIS);
				%ferr = dx;
        else        
                %dx   = bound(1)-bound(4);
                dx = input(1)*SCALE_DX;
                dx = max(-1, min(dx,1));
                ferr = evalfis([dx deriv], NEFCON_BNDFIS);
				%ferr = dx;
        end

    else 
        deriv = max(-1, min(bound(5)*SCALE_DXDT ,1));
        if bound(4) > bound(1)		% greater than signal
            dx = bound(2)-bound(4)*SCALE_DX;
            dx = max(-1, min(dx,1));
            if bound(4) < bound(2)      % between signal and bound
                ferr = evalfis([dx deriv], NEFCON_BNDFIS);
				%ferr = dx;
            	ferr = ferr*abs((bound(4)-bound(1))/(bound(2)-bound(1)));
            	%ferr = 0;
            else
                dx   = bound(2)-bound(4);
                dx = max(-1, min(dx,1));
                ferr = evalfis([dx deriv], NEFCON_BNDFIS);
				%ferr = dx;
            end
        else        
            dx = bound(3)-bound(4);
            dx = max(-1, min(dx,1))*SCALE_DX;
            if bound(4) > bound(3)      % between signal and bound
                ferr = evalfis([dx deriv], NEFCON_BNDFIS);
				%ferr = dx;
            	ferr = ferr*abs((bound(4)-bound(1))/(bound(3)-bound(1)));
            	%ferr = 0;
            else
                ferr = evalfis([dx deriv], NEFCON_BNDFIS);
				%ferr = dx;
            end
        end
    end


end

⌨️ 快捷键说明

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