%ex6.m 模糊控制器S函数(ctrl)
function[sys,x0,str,ts]=spacemodel(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 3,
sys=mdlOutputs(t,x,u);
case {2,4,9}
sys=[];
otherwise
error(['Unhandled flag=',num2str(flag)]);
end
function[sys,x0,str,ts]=mdlInitializeSizes
sizes=simsizes;
sizes.NumContStates =0;
sizes.NumDiscStates =0;
sizes.NumOutputs =1;
sizes.NumInputs =2;
sizes.DirFeedthrough =1;
sizes.NumSampleTimes =1;
sys=simsizes(sizes);
x0=[];
str=[];
ts=[0 0];
function sys=mdlOutputs(t,x,u)
x=[u(1);u(2)];
load K1_file;
ut1=K1*x;
ut2=K2*x;
ut3=K3*x;
ut4=K4*x;
ut5=K5*x;
%%%%%%%%%%%%%%%%%%%%
out_sum=0;
temp_sum=0;
xm1=0;
xm2=0;
xm3=0;
xm4=0;
xm5=0;
xm6=0;
xm7=0;
xm8=0;
xm9=0;
ym1=0;
ym2=0;
ym3=0;
ym4=0;
ym5=0;
ym6=0;
ym7=0;
ym8=0;
ym9=0;
out=0;
out_sum=0;
temp_sum=0;
temp=1;
xm1 = gaussmf(x(1), [1 0]);
ym1 = gaussmf(x(2)/4, [1 0]);
if xm1>= ym1,
temp=ym1;
else
temp=xm1;
end
out1=temp.*K1*x;
out_sum=out_sum+out1;
temp_sum=temp_sum+temp;
xm2 = gaussmf(x(1), [1 0]);
ym2 = gaussmf(x(2)/4, [1 -4]);
if xm2>= ym2,
temp=ym2;
else
temp=xm2;
end
out2=temp.*K2*x;
out_sum=out_sum+out2;
temp_sum=temp_sum+temp;
xm3 = gaussmf(x(1), [1 0]);
ym3 = gaussmf(x(2)/4, [1 4]);
if xm3>= ym3,
temp=ym3;
else
temp=xm3;
end
out3=temp.*K2*x;
out_sum=out_sum+out3;
temp_sum=temp_sum+temp;
xm4 = gaussmf(x(1), [1 -pi/3]);
ym4 = gaussmf(x(2)/4, [1 0]);
if xm4>= ym4,
temp=ym4;
else
temp=xm4;
end
out4=temp.*K3*x;
out_sum=out_sum+out4;
temp_sum=temp_sum+temp;
xm5 = gaussmf(x(1), [1 pi/3]);
ym5 = gaussmf(x(2)/4, [1 0]);
if xm3>= ym5,
temp=ym5;
else
temp=xm5;
end
out5=temp.*K3*x;
out_sum=out_sum+out5;
temp_sum=temp_sum+temp;
xm6 = gaussmf(x(1), [1 pi/3]);
ym6 = gaussmf(x(2)/4, [1 4]);
if xm6>= ym6,
temp=ym6;
else
temp=xm6;
end
out6=temp.*K4*x;
out_sum=out_sum+out6;
temp_sum=temp_sum+temp;
xm7 = gaussmf(x(1), [1 -pi/3]);
ym7 = gaussmf(x(2)/4, [1 -4]);
if xm3>= ym7,
temp=ym7;
else
temp=xm7;
end
out7=temp.*K4*x;
out_sum=out_sum+out7;
temp_sum=temp_sum+temp;
xm8 = gaussmf(x(1), [1 -pi/3]);
ym8 = gaussmf(x(2)/4, [1 4]);
if xm6>= ym8,
temp=ym8;
else
temp=xm8;
end
out8=temp.*K5*x;
out_sum=out_sum+out8;
temp_sum=temp_sum+temp;
xm9 = gaussmf(x(1), [1 pi/3]);
ym9 = gaussmf(x(2)/4, [1 -4]);
if xm9>= ym9,
temp=ym9;
else
temp=xm9;
end
out9=temp.*K5*x;
out_sum=out_sum+out9;
temp_sum=temp_sum+temp;
%%%%%%%%%%%%%%%%%%%%
ut=out_sum/temp_sum;
%ut=out_sum;
sys(1)=ut;
没有合适的资源?快使用搜索试试~ 我知道了~
基于MATLAB实现的单级倒立摆的 T-S 模型包括 LMI 程序源码 +使用说明文档
共6个文件
m:3个
mat:1个
mdl:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 197 浏览量
2024-05-22
17:32:15
上传
评论
收藏 12KB RAR 举报
温馨提示
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的单级倒立摆的 T-S 模型 包括 LMI 程序源码 ex6.m 模糊控制器S 函数ctrl ex6.m 被控对象S 函数plant+使用说明文档 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于MATLAB实现的单级倒立摆的 T-S 模型 包括 LMI 程序源码 ex6.m 模糊控制器S 函数ctrl ex6.m 被控对象S 函数plant+使用说明文档.rar (6个子文件)
基于模糊TS算法的单级倒立摆
K1_file.mat 453B
ts4.mdl 17KB
G4cg.m 3KB
G4L.m 3KB
G4p.m 931B
使用说明文档.md 13KB
共 6 条
- 1
资源评论
IT狂飙
- 粉丝: 4778
- 资源: 2640
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功