t-s模糊matlab编程
时间: 2023-08-10 14:06:13 浏览: 360
T-S模糊是基于模糊集合理论的一种模糊控制方法,可以用于系统建模和控制。在MATLAB中,可以使用Fuzzy Logic Toolbox来实现T-S模糊控制。
下面是一个简单的T-S模糊控制的MATLAB代码示例:
```matlab
% 定义输入量和输出量的范围
inputRange = [-10 10];
outputRange = [-5 5];
% 定义模糊集合的名称和范围
inputNames = {'error', 'change'};
inputRanges = [inputRange; inputRange];
outputNames = {'output'};
outputRanges = outputRange;
% 定义模糊集合的隶属度函数
errorMF = trimf(inputRange, [-10 -5 0]);
changeMF = trimf(inputRange, [-5 0 5]);
outputMF = trimf(outputRange, [-5 0 5]);
% 创建模糊系统对象
fis = newfis('TS Fuzzy Controller', 'mamdani', 'min', 'max', 'min', 'max', 'centroid');
% 添加输入变量和输出变量
fis = addvar(fis, 'input', inputNames{1}, inputRanges(1,:));
fis = addvar(fis, 'input', inputNames{2}, inputRanges(2,:));
fis = addvar(fis, 'output', outputNames{1}, outputRanges);
% 添加隶属度函数
fis = addmf(fis, 'input', 1, 'NM', errorMF);
fis = addmf(fis, 'input', 1, 'NS', errorMF);
fis = addmf(fis, 'input', 1, 'ZE', errorMF);
fis = addmf(fis, 'input', 1, 'PS', errorMF);
fis = addmf(fis, 'input', 1, 'PM', errorMF);
fis = addmf(fis, 'input', 2, 'NM', changeMF);
fis = addmf(fis, 'input', 2, 'NS', changeMF);
fis = addmf(fis, 'input', 2, 'ZE', changeMF);
fis = addmf(fis, 'input', 2, 'PS', changeMF);
fis = addmf(fis, 'input', 2, 'PM', changeMF);
fis = addmf(fis, 'output', 1, 'NM', outputMF);
fis = addmf(fis, 'output', 1, 'NS', outputMF);
fis = addmf(fis, 'output', 1, 'ZE', outputMF);
fis = addmf(fis, 'output', 1, 'PS', outputMF);
fis = addmf(fis, 'output', 1, 'PM', outputMF);
% 添加模糊规则
ruleList = [1 1 1 1 1; % NM,NM
1 2 1 1 1; % NM,NS
2 3 1 1 1; % NS,ZE
3 4 1 1 1; % ZE,PS
4 5 1 1 1; % PS,PM
5 5 1 1 1; % PM,PM
1 1 2 1 1; % NM,NM
2 2 2 1 1; % NS,NS
3 3 2 1 1; % ZE,ZE
4 4 2 1 1; % PS,PS
5 5 2 1 1; % PM,PM
1 1 3 1 1; % NM,NM
2 2 3 1 1; % NS,NS
3 3 3 1 1; % ZE,ZE
4 4 3 1 1; % PS,PS
5 5 3 1 1; % PM,PM
1 1 4 1 1; % NM,NM
2 2 4 1 1; % NS,NS
3 3 4 1 1; % ZE,ZE
4 4 4 1 1; % PS,PS
5 5 4 1 1; % PM,PM
1 1 5 1 1; % NM,NM
2 2 5 1 1; % NS,NS
3 3 5 1 1; % ZE,ZE
4 4 5 1 1; % PS,PS
5 5 5 1 1]; % PM,PM
fis = addrule(fis, ruleList);
% 评估模糊系统
error = -3.5;
change = 1.2;
output = evalfis([error change], fis);
% 显示模糊系统和输出
plotfis(fis);
fprintf('Output: %f\n', output);
```
这个例子中,我们首先定义了输入量和输出量的范围,然后定义了模糊集合的名称、范围和隶属度函数。接着,我们创建了一个新的模糊系统对象,并添加了输入变量和输出变量。然后,我们添加了隶属度函数和模糊规则,并使用`evalfis`函数评估模糊系统并输出结果。
你可以根据自己的需求修改输入量和输出量的范围、模糊集合的名称和范围、隶属度函数以及模糊规则来实现自己的T-S模糊控制系统。
阅读全文