m0_62803629 2022-03-14 21:29 采纳率: 0%
浏览 54

连续T-S模糊系统仿真问题

问题遇到的现象和发生背景

具体描述:规则1:IF x2^2(t) is M1 THEN xd(t) = A1x(t)+B1u(t) y(t) = C1x(t) +Df1f(t)+Dw1w(t)
规则2:IF x2^2(t) is M2 THEN xd(t) = A2x(t)+B2u(t) y(t) = C2x(t) +Df2f(t)+Dw2w(t)

问题相关代码,请勿粘贴截图

A1 = [-10,0,1;-2,1,0;1,0,-3];
A2 = [-6,1,0;0,-0.5,-1;1,0,-1];
B1 = [1 ;0 ;0 ];
B2 = [0;1;0];
C1 = [1,0,0;-1,1,0;0,0,1];
C2 = [1,0,0;-1,1,0;0,0,1];
Df1 = [1;1.5;2];
Df2 = [0.8;1.2;1.5];
Dw1 = [1.2;0.8;1];
Dw2 = [0.7;1.1;0.9];
beta = 1.25;
gamma = 2.75;
t = 0:1:100;
N = 100;
x=zeros(3,N);
x0 = zeros(3,N);
e = zeros(3,N);
u = [1];
x(:,1) = [0.3;0.6;-0.4];
x0(:,1) = [0.3;0.6;-0.4]; % 估计值
beta = 1.25;
gamma = 2.75;
H1 = [0.1814 0.3471 0.9677];
H2 = [0.2628 0.5125 0.9528];
L1 = [3.8850 -4.9451 1.5847;0.8995 -2.5678 1.5180;-1.8854 -0.4408 1.5593];
L2 = [0.4494 -4.3319 3.0299;-0.2319 -0.8850 0.8909;-0.7442 0.5125 0.9528];
P = [1.7990 0.7171 -2.6108;
0.7171 4.9896 -0.0404;
-2.6108 -0.0404 6.4659];
M1 = [12.5566 -9.5869 -0.1315;
7.3502 -16.3405 8.6475;
-22.3700 10.1641 5.8837];
M2 = [2.5851 -9.7658 3.6022;
-0.8048 -7.5428 6.5794;
-5.9758 14.6591 -1.7856];
T = 100;
%Ts = 1;
%N = T / Ts;
t = 0:1:100;
% w = unifrnd(-0.35,0.35) %扰动
w = 0;

syms K;
J=zeros(1,101);

%% 模糊规则
for k =1:length(t)
f(k) = lizi(t(k)); % 故障
fisMat = sugfis;
fisMat = addInput(fisMat,[-2 2 ],'Name','x2^2');
fisMat = addMF(fisMat,'x2^2','gaussmf',[-0.5 0],'Name','M1');
fisMat = addMF(fisMat,'x2^2','gaussmf',[-0.5 1],'Name','M2');

fisMat = addOutput(fisMat,[-10 10],'Name','xd','NumMFs',2);
fisMat = addMF(fisMat,'xd','linear',A1*x+ B1*u,'Name','xd1');
fisMat = addMF(fisMat,'xd','linear',A2*x +B2*u,'Name','xd2');

fisMat = addOutput(fisMat,'output','y ',[-4 4]);
fisMat = addMF(fisMat,'y','linear',C1*x +Df1*f(k) + Dw1*w,'Name','第一个');
fisMat = addMF(fisMat,'y','linear',C2*x +Df2*f(k) + Dw1*w,'Name','第一个');

ruleList = [1 1 1 1 1; % Rule 1
2 2 2 1 1; % Rule 2
];
fisMat = addRule(fisMat,ruleList);

运行结果及报错内容

错误使用 FuzzyInferenceSystem/addMF (line 1072)
Specify membership function parameters as a numeric vector.

出错 houjunteng_mohukongzhi (line 58)
fisMat = addMF(fisMat,'xd','linear',A1x+ B1u,'Name','xd1');

我的解答思路和尝试过的方法

把A1x+ B1u换成具体数值不会报错,但是矩阵会报错

我想要达到的结果

程序可以运行

  • 写回答

1条回答 默认 最新

  • CSDN专家-Matlab_Fans 2022-03-14 22:55
    关注

    addmf是增加隶属度函数,增加线性的隶属度函数的话,输入[a b c]长度为3的向量,表示的就是ax+by+c

    评论

报告相同问题?

问题事件

  • 创建了问题 3月14日

悬赏问题

  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题
  • ¥20 基于matlab的航迹融合 航迹关联 航迹插补
  • ¥15 用Matlab实现图中的光线追迹
  • ¥15 联想笔记本开机出现系统更新界面