matlab两输出模糊规则表怎么编写
时间: 2024-02-07 20:02:50 浏览: 25
在 MATLAB 中,可以使用 Fuzzy Logic Toolbox 来创建和编写模糊规则表。下面是一个简单的示例:
假设我们有两个模糊变量 X 和 Y,它们的值域分别为 [0, 10] 和 [0, 5]。我们要设计一个简单的模糊控制器,通过输入 X 和 Y 的值来输出一个模糊值 Z,其值域为 [0, 1]。
第一步是定义模糊集合。我们可以使用 trimf 函数来定义三角形的模糊集合。例如,为了定义一个名为“高”的模糊集合,其峰值为 8,可以使用以下代码:
```
x = 0:0.1:10; % 定义 X 的取值范围
mf_high = trimf(x, [7 8 9]); % 定义“高”模糊集合
```
类似地,我们可以定义“中”和“低”模糊集合。
第二步是编写模糊规则表。我们可以使用 addrule 函数来添加规则。例如,为了添加一个规则,如果 X 很高并且 Y 很低,则 Z 很高,可以使用以下代码:
```
rule1 = [1 1 1 1]; % [X is high AND Y is low] -> [Z is high]
fis = addrule(fis, rule1);
```
类似地,我们可以添加其他规则。
最后,我们可以使用 evalfis 函数来计算输出模糊值 Z。例如,为了计算 X=9 和 Y=3 时的输出模糊值,可以使用以下代码:
```
x = 9;
y = 3;
z = evalfis([x, y], fis);
```
这样就可以得到输出模糊值 z 的结果了。
相关问题
在matlab中模糊规则如何编写
在Matlab中编写模糊规则需要使用到Fuzzy Logic Toolbox工具箱,具体步骤如下:
1. 创建模糊推理系统。
```
fis = newfis('myfuzzy');
```
2. 定义输入变量和其隶属度函数。
```
fis = addvar(fis, 'input', 'input_var', [min_value max_value]);
fis = addmf(fis, 'input', 1, 'mf1', 'trimf', [a b c]);
fis = addmf(fis, 'input', 1, 'mf2', 'trimf', [d e f]);
```
3. 定义输出变量和其隶属度函数。
```
fis = addvar(fis, 'output', 'output_var', [min_value max_value]);
fis = addmf(fis, 'output', 1, 'mf1', 'trimf', [a b c]);
fis = addmf(fis, 'output', 1, 'mf2', 'trimf', [d e f]);
```
4. 定义模糊规则。
```
rule1 = [1 1 1 1]; % if input_var is mf1 then output_var is mf1
rule2 = [2 1 2 1]; % if input_var is mf2 then output_var is mf1
fis = addrule(fis, [rule1; rule2]);
```
在上述代码中,rule1表示当输入变量input_var的隶属度函数为mf1时,输出变量output_var的隶属度函数为mf1。rule2表示当输入变量input_var的隶属度函数为mf2时,输出变量output_var的隶属度函数为mf1。
需要注意的是,模糊规则的编写需要根据实际问题进行确定,规则的数量和形式也会影响控制效果,因此需要进行实验和调整,以达到最佳的控制效果。
matlab 模糊规则表导出 绘制成表格
在Matlab中,可以通过将模糊规则表导出和绘制成表格的方法来观察和分析模糊控制系统的规则。下面是一个简单的实例来说明如何完成这个任务。
第一步是创建一个模糊控制系统对象,并设置其输入和输出变量。例如,我们可以创建一个有两个输入变量和一个输出变量的模糊控制器:
```matlab
fis = newfis('fis');
fis = addvar(fis, 'input', 'input1', [0 10]);
fis = addvar(fis, 'input', 'input2', [0 5]);
fis = addvar(fis, 'output', 'output', [0 15]);
```
第二步是定义模糊集合和其隶属函数,以及创建模糊规则。例如,我们可以定义三个模糊集合(低、中、高)和三个隶属函数(三角形、高斯、高斯):
```matlab
fis = addmf(fis, 'input', 'input1', 'low', 'trimf', [1 3 5]);
fis = addmf(fis, 'input', 'input1', 'medium', 'gaussmf', [1 5]);
fis = addmf(fis, 'input', 'input1', 'high', 'gaussmf', [1 7]);
fis = addmf(fis, 'input', 'input2', 'low', 'trimf', [1 2 3]);
fis = addmf(fis, 'input', 'input2', 'medium', 'gaussmf', [1 2]);
fis = addmf(fis, 'input', 'input2', 'high', 'gaussmf', [1 4]);
fis = addmf(fis, 'output', 'output', 'low', 'trimf', [1 5 10]);
fis = addmf(fis, 'output', 'output', 'medium', 'gaussmf', [1 7]);
fis = addmf(fis, 'output', 'output', 'high', 'gaussmf', [1 12]);
```
第三步是定义模糊规则。例如,我们可以定义9个模糊规则:
```matlab
ruleList = [1 1 1 1 1;
1 1 2 1 1;
1 1 3 1 1;
2 1 1 1 1;
2 1 2 1 1;
2 1 3 1 1;
3 1 1 1 1;
3 1 2 1 1;
3 1 3 1 1];
fis = addrule(fis, ruleList);
```
最后一步是将模糊规则表导出并绘制成表格:
```matlab
ruleTable = showrule(fis);
disp(ruleTable);
```
运行上述代码后,将得到一个包含模糊规则的表格输出。该表格中的每一行表示一个模糊规则,每一列表示原始输入、处理后的输入和输出。