📄 snefsign.m
字号:
function [sys, x0] = snefsign(t, x, u, flag); %SNEFCON SIMULINK s-function Nefcon Bounded Signal Generator % This funtion interpolates bounds an signal at timestep t.%% See also NEFCON and NEFOPTF. % Author(s): Andreas Nuernberger, 08/1996 % NCD Globals: global NCD_LB NCD_UB NEFCON_SIGNAL
%NEFCON globals
global NEFCON_BOUNDS
outp = 3; inp = 2; if flag == 0 if NCD_LB == [] | NCD_UB == [] error('Bounds undefined.'); end if NEFCON_SIGNAL == [] error('Signal undefined.'); end sys = [0, 1, outp, inp, 0, 1]; ub = NCD_UB(3,1); lb = NCD_LB(3,1); sign = NEFCON_SIGNAL(2,1);
NEFCON_BOUNDS = [sign, ub, lb, u']; elseif flag == 3 % find bounds t_max = NCD_UB(2, size(NCD_UB,2)); if t >= t_max ub = NCD_UB(3,size(NCD_UB,2)); lb = NCD_LB(3,size(NCD_LB,2)); sign = NEFCON_SIGNAL(2, size(NEFCON_SIGNAL, 2)); elseif t <= NCD_UB(2,1) ub = NCD_UB(3,1); lb = NCD_LB(3,1); sign = NEFCON_SIGNAL(2,1); else % interpolate row = 2; while NCD_UB(2,row) < t row = row + 2; end; ub = NCD_UB(3,row-1) ... + (NCD_UB(3,row)-NCD_UB(3,row-1))/(NCD_UB(2,row)-NCD_UB(2,row-1)) ... * (t - NCD_UB(2,row-1)); row = 2; while NCD_LB(2,row) < t row = row + 2; end; lb = NCD_LB(3,row-1) ... + (NCD_LB(3,row)-NCD_LB(3,row-1))/(NCD_LB(2,row)-NCD_LB(2,row-1)) ... * (t - NCD_LB(2,row-1)); row = 2; while NEFCON_SIGNAL(1,row) < t row = row + 1; end; sign = NEFCON_SIGNAL(2,row-1) ... + (NEFCON_SIGNAL(2,row)-NEFCON_SIGNAL(2,row-1))/(NEFCON_SIGNAL(1,row)-NEFCON_SIGNAL(1,row-1)) ... * (t - NEFCON_SIGNAL(1,row-1)); end
sys = [sign, ub, lb]; NEFCON_BOUNDS = [sys, u']; else sys = []; end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -