📄 nefbnder.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 + -