举例模糊控制器matlab仿真
时间: 2023-05-29 21:03:21 浏览: 98
以下是一个简单的模糊控制器的Matlab仿真例子:
```matlab
% 设定输入变量和输出变量的范围
inputRange = [-10 10];
outputRange = [-50 50];
% 设定模糊控制器规则
ruleList = [1 1 1; 1 2 2; 1 3 3; 2 1 2; 2 2 3; 2 3 3; 3 1 3; 3 2 3; 3 3 3];
% 创建模糊控制器对象
fis = mamfis('Name','Fuzzy Controller','NumInputs',2,'NumOutputs',1);
% 添加输入变量
fis = addInput(fis,inputRange,'Name','input1');
fis = addInput(fis,inputRange,'Name','input2');
% 添加输出变量
fis = addOutput(fis,outputRange,'Name','output1');
% 添加模糊集合
fis = addMF(fis,'input1','trimf',[-10 -10 -5],'Name','NB');
fis = addMF(fis,'input1','trimf',[-7.5 -5 -2.5],'Name','NM');
fis = addMF(fis,'input1','trimf',[-3 0 3],'Name','NS');
fis = addMF(fis,'input1','trimf',[-2.5 5 7.5],'Name','ZE');
fis = addMF(fis,'input1','trimf',[2.5 7.5 10],'Name','PS');
fis = addMF(fis,'input1','trimf',[5 10 10],'Name','PB');
fis = addMF(fis,'input2','trimf',[-10 -10 -5],'Name','NB');
fis = addMF(fis,'input2','trimf',[-7.5 -5 -2.5],'Name','NM');
fis = addMF(fis,'input2','trimf',[-3 0 3],'Name','NS');
fis = addMF(fis,'input2','trimf',[-2.5 5 7.5],'Name','ZE');
fis = addMF(fis,'input2','trimf',[2.5 7.5 10],'Name','PS');
fis = addMF(fis,'input2','trimf',[5 10 10],'Name','PB');
fis = addMF(fis,'output1','trimf',[-50 -50 -25],'Name','NB');
fis = addMF(fis,'output1','trimf',[-37.5 -25 -12.5],'Name','NM');
fis = addMF(fis,'output1','trimf',[-15 0 15],'Name','NS');
fis = addMF(fis,'output1','trimf',[-12.5 25 37.5],'Name','ZE');
fis = addMF(fis,'output1','trimf',[12.5 37.5 50],'Name','PS');
fis = addMF(fis,'output1','trimf',[25 50 50],'Name','PB');
% 添加规则
fis = addRule(fis,ruleList);
% 设定输入信号
x1 = -5;
x2 = 3;
% 模糊推理
output = evalfis([x1 x2],fis);
% 显示输出信号
disp(['Output: ' num2str(output)]);
```
在这个例子中,我们首先设定了输入变量(`inputRange`)和输出变量(`outputRange`)的范围。然后,我们定义了模糊控制器的规则(`ruleList`)。
接下来,我们创建了一个名为“Fuzzy Controller”的模糊控制器对象,并添加了两个输入变量和一个输出变量。然后,我们添加了每个变量的模糊集合。
最后,我们设定了输入信号(`x1`和`x2`),并使用`evalfis`函数对模糊控制器进行模糊推理,得到输出信号(`output`)。