MATLAB中搭建模糊逻辑控制器后的输出如何显示和输出
时间: 2024-05-09 12:20:41 浏览: 19
在MATLAB中搭建模糊逻辑控制器后,可以用以下方法显示和输出输出结果:
1. 使用plot函数绘制模糊输出曲线,例如:
```matlab
output = evalfis(input, FIS); % 计算模糊输出
plot(output); % 绘制模糊输出曲线
```
2. 使用fuzzy函数获取模糊输出的具体值,例如:
```matlab
output = evalfis(input, FIS); % 计算模糊输出
fuzzy(output); % 显示模糊输出的具体值
```
3. 将模糊输出转换为 crisp 输出,例如:
```matlab
output = evalfis(input, FIS); % 计算模糊输出
crisp_output = defuzz(output, 'centroid'); % 将模糊输出转换为 crisp 输出
disp(crisp_output); % 显示 crisp 输出
```
相关问题
如何在MATLAB中用命令行搭建模糊逻辑控制器
要在MATLAB中用命令行搭建模糊逻辑控制器,可以按照以下步骤操作:
1. 定义输入变量和输出变量。例如,假设我们要设计一个温度控制器,输入变量为温度误差(e)和温度变化率(ec),输出变量为加热器功率(p)。
2. 定义模糊集和隶属函数。例如,可以定义三个模糊集:负大(NL)、零(ZL)和正大(PL),分别表示输入变量的值比较小、适中和比较大。对于每个模糊集,需要定义隶属函数。可以选择三角形隶属函数或高斯隶属函数等。
3. 构建模糊规则。根据经验或专家知识,可以构建一组模糊规则,将输入变量的值与输出变量的值联系起来。例如,可以定义如下规则:
如果 e 是 NL 和 ec 是 NL,则 p 是 PL。
如果 e 是 NL 和 ec 是 ZL,则 p 是 PL。
如果 e 是 NL 和 ec 是 PL,则 p 是 ZL。
如果 e 是 ZL 和 ec 是 NL,则 p 是 PL。
如果 e 是 ZL 和 ec 是 ZL,则 p 是 ZL。
如果 e 是 ZL 和 ec 是 PL,则 p 是 NL。
如果 e 是 PL 和 ec 是 NL,则 p 是 ZL。
如果 e 是 PL 和 ec 是 ZL,则 p 是 NL。
如果 e 是 PL 和 ec 是 PL,则 p 是 NL。
4. 创建模糊控制器对象。使用命令fuzzylogic.controller创建一个模糊控制器对象,并设置输入变量、输出变量、模糊集和模糊规则等属性。例如,可以使用如下命令创建一个模糊控制器对象:
controller = fuzzylogic.controller;
controller.input('error', [-10 10]);
controller.input('error_change', [-5 5]);
controller.output('power', [0 100]);
controller.input('error').membershipfunction('trimf', [-10 -5 0]);
controller.input('error').membershipfunction('trimf', [-5 0 5]);
controller.input('error').membershipfunction('trimf', [0 5 10]);
controller.input('error_change').membershipfunction('trimf', [-5 -2 0]);
controller.input('error_change').membershipfunction('trimf', [-2 0 2]);
controller.input('error_change').membershipfunction('trimf', [0 2 5]);
controller.rule([1 1], 3);
controller.rule([1 2], 3);
controller.rule([1 3], 2);
controller.rule([2 1], 3);
controller.rule([2 2], 2);
controller.rule([2 3], 1);
controller.rule([3 1], 2);
controller.rule([3 2], 1);
controller.rule([3 3], 1);
5. 输入变量值,获取输出变量值。使用命令fuzzylogic.eval计算输出变量值。例如,可以使用如下命令输入温度误差为-2,温度变化率为1,并获取加热器功率的推荐值:
input = [ -2 1 ];
output = fuzzylogic.eval(controller, input);
以上就是在MATLAB中用命令行搭建模糊逻辑控制器的步骤。需要注意的是,以上示例仅供参考,实际应用中需要根据具体问题进行调整和优化。
MATLAB如何用命令行搭建模糊逻辑控制器
以下是用命令行搭建模糊逻辑控制器的步骤:
1. 定义输入变量和输出变量。例如,我们可以定义一个输入变量“温度”,取值范围为0到100,和一个输出变量“加热时间”,取值范围也为0到100。
```matlab
temp = 0:100; % 定义温度输入变量
heat_time = 0:100; % 定义加热时间输出变量
```
2. 定义模糊集合和隶属函数。例如,我们可以定义三个模糊集合来表示“温度”输入变量,分别是“低温度”、“中温度”和“高温度”,并为每个模糊集合定义一个隶属函数。这里我们使用三角形隶属函数来定义这些集合。
```matlab
low_temp = trimf(temp, [0 0 50]); % 定义低温度模糊集合
med_temp = trimf(temp, [0 50 100]); % 定义中温度模糊集合
high_temp = trimf(temp, [50 100 100]); % 定义高温度模糊集合
```
3. 定义模糊规则。例如,我们可以定义一些简单的规则来描述“温度”输入变量和“加热时间”输出变量之间的关系。这里我们使用“低温度”和“中温度”对应的规则,表明当温度较低时应该加热更长时间,而当温度较高时应该加热更短时间。
```matlab
rule1 = [1 1 40]; % 如果温度为“低温度”,则加热时间为“长时间”
rule2 = [2 1 60]; % 如果温度为“中温度”,则加热时间为“中等时间”
```
4. 基于定义的模糊集合、隶属函数和规则,构建模糊逻辑控制器。例如,我们可以使用“fuzzy”函数来构建一个简单的模糊逻辑控制器。
```matlab
fis = fuzzy(2); % 创建一个两个输入变量的模糊系统
fis.input(1).name = '温度'; % 设置第一个输入变量的名称为“温度”
fis.input(1).range = [0 100]; % 设置第一个输入变量的取值范围
fis.input(1).mf(1).name = '低温度'; % 设置第一个输入变量的第一个模糊集合的名称为“低温度”
fis.input(1).mf(1).type = 'trimf'; % 设置第一个输入变量的第一个模糊集合的隶属函数类型为三角形隶属函数
fis.input(1).mf(1).params = [0 0 50]; % 设置第一个输入变量的第一个模糊集合的隶属函数参数
fis.input(1).mf(2).name = '中温度'; % 设置第一个输入变量的第二个模糊集合的名称为“中温度”
fis.input(1).mf(2).type = 'trimf'; % 设置第一个输入变量的第二个模糊集合的隶属函数类型为三角形隶属函数
fis.input(1).mf(2).params = [0 50 100]; % 设置第一个输入变量的第二个模糊集合的隶属函数参数
fis.rule(1).antecedent = [1]; % 设置第一条规则的前提为“温度”输入变量的第一个模糊集合
fis.rule(1).consequent = [1]; % 设置第一条规则的结论为“加热时间”输出变量的第一个模糊集合
fis.rule(1).weight = 1; % 设置第一条规则的权重为1
fis.rule(2).antecedent = [2]; % 设置第二条规则的前提为“温度”输入变量的第二个模糊集合
fis.rule(2).consequent = [2]; % 设置第二条规则的结论为“加热时间”输出变量的第二个模糊集合
fis.rule(2).weight = 1; % 设置第二条规则的权重为1
```
5. 使用模糊逻辑控制器进行推理。例如,我们可以使用“evalfis”函数来计算输入变量“温度”为40时输出变量“加热时间”的模糊值。
```matlab
input_temp = 40; % 定义输入变量“温度”的取值
output_heat_time = evalfis(input_temp, fis); % 计算输出变量“加热时间”的模糊值
```
这就是用命令行搭建模糊逻辑控制器的基本步骤。当然,实际应用中可能需要更复杂的模糊集合、隶属函数和规则,以及更高级的模糊推理算法。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)