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

📄 fuz_pid.m

📁 fuz_pid函数用来表示模糊PID控制器的核心部分.
💻 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;
%---模块初始化函数 mdl InitializeSizes
function [sys,x0,str,ts]=mdlInitializeSizes(T)
sizes=simsizes; %读入系统变量的默认值
sizes.NumContStates=0;sizes.NumDiskStates=3;
sizes.NumOutputs=4;sizes.NumInputs=2;
sizes.DirFeedthrough=0;sizes.NumSampleTimes=1;
sys=simsizes(sizes);x0=zeros(3,1);
str=[];ts=[T 0];%继承输入信号的采样周期
%---离散状态更新函数 mdlUpdates
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 + -