?? han_ctrl.m
字號:
function [sys,x0,str,ts]=han_ctrl(t,x,u,flag,aa,bet1,b,d)
switch flag,
case 0
[sys,x0,str,ts] = mdlInitializeSizes(t,u,x); % 初始化
case 3
sys = mdlOutputs(t,x,u,aa,bet1,b,d); % 輸出量的計算
case { 1,2,4,9 }
sys = []; % 未使用的flag值
otherwise
error(['Unhandled flag = ',num2str(flag)]); % 處理錯誤
end;
%==============================================================
% 當flag為0時進行整個系統的初始化
%==============================================================
function [sys,x0,str,ts] = mdlInitializeSizes(t,u,x)
% 首先調用simsizes函數得出系統規模參數sizes, 并根據離散系統的實際
% 情況設置sizes變量
sizes = simsizes;
sizes.NumContStates = 0; % 連續狀態數為0
sizes.NumDiscStates = 0; % 離散狀態數為0
sizes.NumOutputs = 1; % 輸出路數為1
sizes.NumInputs = 5; % 輸入路數為5
sizes.DirFeedthrough = 1;% 輸入在輸出中直接顯示出來,注意不能將其設置為0
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = []; % 設置初始狀態為零狀態
str = []; % 將str變量設置為空字符串
ts = [-1 0]; % 采樣周期: [period, offset]
%==============================================================
% 在主函數flag=3時,計算系統的輸出變量
%==============================================================
function sys = mdlOutputs(t,x,u,aa,bet1,b,d)
e1=u(1)-u(3); e2=u(2)-u(4);
u0=bet1(1)*fal(e1,aa(1),d)+bet1(2)*fal(e2,aa(2),d);
sys=u0-u(5)/b;
%==============================================================
% 用戶定義的子函數: fal
%==============================================================
function f=fal(e,a,d)
if abs(e)<d
f=e*d^(a-1);
else
f=(abs(e))^a*sign(e);
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -