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

📄 problem3.m

📁 采用matlab语言实现的模糊控制例程
💻 M
字号:
clear;clc;

% 论域
MinOfU=-1; % 论域的下界
MaxOfU=1;  % 论域的上界
h=0.0005;  % 步长
SizeOfU=floor((MaxOfU-MinOfU)/h)+1;   % 离散后的论域大小

% 离散化
for x=MinOfU:h:MaxOfU
  i=floor((x-MinOfU)/h)+1;  % 当前的离散点的位置
  if ((x>=MinOfU)&(x<=-0.5))  % if条件中-0.5和0.5来自已知的模糊变量e的隶属度函数
    EN(i)=1;
    EP(i)=0;
  elseif ((x>-0.5)&(x<0.5))
    EN(i)=-x+0.5;
    EP(i)=x+0.5;
  else
    EN(i)=0;
    EP(i)=1;
  end;
end;
DEP=EP;
DEN=EN;
for x=MinOfU:h:MaxOfU
  i=floor((x-MinOfU)/h)+1;
  if (x<=0)  % if条件中0来自已知的模糊变量u的隶属度函数
    UN(i)=-x;
    UZ(i)=x+1;
    UP(i)=0;
  else
    UN(i)=0;
    UZ(i)=-x+1;
    UP(i)=x;
  end;
end;

% 模糊化
e=0.2;     % 已知条件
de=0.5;    % 已知条件
ee=floor((e-MinOfU)/h)+1;
dee=floor((de-MinOfU)/h)+1;

% 模糊推理
alpha1=min(DEP(dee),EP(ee));   % alpha1,2,3,4由规则表得出
alpha2=min(DEP(dee),EN(ee));
alpha3=min(DEN(dee),EP(ee));
alpha4=min(DEN(dee),EN(ee));
for i=1:SizeOfU
  UU1(i)=alpha1*UN(i);
  UU2(i)=alpha2*UZ(i);
  UU3(i)=alpha3*UZ(i);
  UU4(i)=alpha4*UP(i);
end;
UU=max(UU1,UU2);
UU=max(UU3,UU);
UU=max(UU4,UU);


% 清晰化
z0=0;   % 输出量
Sum=0;  % 模糊集合的和
for x=MinOfU:h:MaxOfU
  i=floor((x-MinOfU)/h)+1;
  z0=z0+UU(i)*x;
  Sum=Sum+UU(i);
end;
z0=z0/Sum

⌨️ 快捷键说明

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