matlab建立t-s模糊控制
时间: 2023-08-23 13:22:34 浏览: 229
要建立T-S模糊控制系统,需要以下步骤:
1. 确定模糊控制系统的输入和输出变量,以及它们的范围和量化等级。
2. 确定模糊控制系统的模糊规则库,即输入变量与输出变量之间的关系。
3. 设计模糊控制器的输出,即为每个规则确定一个权重或输出值。
4. 在MATLAB中编写代码实现模糊控制器,并将其集成到整个控制系统中。
以下是MATLAB中实现T-S模糊控制的代码示例:
```matlab
% 1. 确定输入和输出变量
x = linspace(-10, 10, 101);
y = linspace(-10, 10, 101);
[X,Y] = meshgrid(x,y);
Z = peaks(X,Y);
% 2. 确定模糊规则库
fis = newfis('myfuzzy');
% 输入变量1
fis = addvar(fis, 'input', 'x', [-10 10]);
fis = addmf(fis, 'input', 1, 'nb', 'gaussmf', [-2 0]);
fis = addmf(fis, 'input', 1, 'nm', 'gaussmf', [-1.5 0]);
fis = addmf(fis, 'input', 1, 'ns', 'gaussmf', [-1 0]);
fis = addmf(fis, 'input', 1, 'ze', 'gaussmf', [0 0]);
fis = addmf(fis, 'input', 1, 'ps', 'gaussmf', [1 0]);
fis = addmf(fis, 'input', 1, 'pm', 'gaussmf', [1.5 0]);
fis = addmf(fis, 'input', 1, 'pb', 'gaussmf', [2 0]);
% 输入变量2
fis = addvar(fis, 'input', 'y', [-10 10]);
fis = addmf(fis, 'input', 2, 'nb', 'gaussmf', [-2 0]);
fis = addmf(fis, 'input', 2, 'nm', 'gaussmf', [-1.5 0]);
fis = addmf(fis, 'input', 2, 'ns', 'gaussmf', [-1 0]);
fis = addmf(fis, 'input', 2, 'ze', 'gaussmf', [0 0]);
fis = addmf(fis, 'input', 2, 'ps', 'gaussmf', [1 0]);
fis = addmf(fis, 'input', 2, 'pm', 'gaussmf', [1.5 0]);
fis = addmf(fis, 'input', 2, 'pb', 'gaussmf', [2 0]);
% 输出变量
fis = addvar(fis, 'output', 'z', [-10 10]);
fis = addmf(fis, 'output', 1, 'nb', 'gaussmf', [-2 0]);
fis = addmf(fis, 'output', 1, 'nm', 'gaussmf', [-1.5 0]);
fis = addmf(fis, 'output', 1, 'ns', 'gaussmf', [-1 0]);
fis = addmf(fis, 'output', 1, 'ze', 'gaussmf', [0 0]);
fis = addmf(fis, 'output', 1, 'ps', 'gaussmf', [1 0]);
fis = addmf(fis, 'output', 1, 'pm', 'gaussmf', [1.5 0]);
fis = addmf(fis, 'output', 1, 'pb', 'gaussmf', [2 0]);
% 3. 设计模糊控制器的输出
ruleList = [1 1 1 1 1 1 1 1 1; % nb nb -> nb
1 2 1 1 1 1 1 1 1; % nb nm -> nb
1 3 2 2 1 1 1 1 1; % nb ns -> nm
2 4 3 3 2 2 1 1 1; % nm ze -> ns
3 5 4 4 3 3 2 2 1; % ns ps -> pm
4 6 5 5 4 4 3 3 2; % pm pm -> pb
5 7 6 6 5 5 4 4 3; % pb pb -> pb
6 7 7 7 6 6 5 5 4; % pb pb -> pb
7 7 7 7 7 7 6 6 5];% pb pb -> pb
fis = addrule(fis, ruleList);
% 4. 在MATLAB中编写代码实现模糊控制器,并将其集成到整个控制系统中
z = zeros(size(Z));
for i = 1:numel(x)
for j = 1:numel(y)
input = [x(i) y(j)];
output = evalfis(input, fis);
z(i,j) = output;
end
end
surf(X,Y,Z);
hold on;
surf(X,Y,z);
```
这是一个基本的T-S模糊控制的示例,具体的实现可以根据具体需求和实际情况进行调整和修改。
阅读全文