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

📄 fuz_pid.m

📁 控制系统计算机辅助设计——MATLAB语言与应用(源代码)
💻 M
字号:
function [sys,x0,str,ts]=fuz_pid(t,x,u,flag,T,aFuz,fx0,gam)
switch flag,
   case 0, [sys,x0,str,ts] = mdlInitializeSizes(T);
   case 2, sys = mdlUpdates(x,u);
   case 3, sys = mdlOutputs(x,u,T,aFuz,fx0,gam);
   case {1, 4, 9}, sys = [];
   otherwise, error(['Unhandled flag = ',num2str(flag)]);
end;
% --- 模块初始化函数  mdlInitializeSizes
function [sys,x0,str,ts] = mdlInitializeSizes(T)
sizes = simsizes; % 读入系统变量的默认值
sizes.NumContStates = 0; sizes.NumDiscStates = 3;
sizes.NumOutputs = 4; sizes.NumInputs = 2;
sizes.DirFeedthrough = 0; sizes.NumSampleTimes = 1;
sys = simsizes(sizes); x0 = zeros(3,1);
str = []; ts = [T 0]; % 继承输入信号的采样周期
% --- 离散状态更新函数  mdlUpdate
function sys = mdlUpdates(x,u)
sys=[u(1);  x(2)+u(1); u(1)-u(2)];  % PID
% --- 输出量计算函数  mdlOutputs
function sys = mdlOutputs(x,u,T,aFuz,fx0,gam)
Kpid=fx0+gam(:).*evalfis(x([1,3]),aFuz)';
sys=[Kpid'*x; Kpid];

⌨️ 快捷键说明

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