模糊逻辑 控制器’,输入2的值应在[-6 6]范围内,但其值为-6.96325。
时间: 2023-05-28 08:05:25 浏览: 36
这种情况下,可以考虑对输入2的值进行修正或者规范化处理,使其符合范围要求。常见的处理方式包括:
1.截断处理:将输入2的值限制在[-6 6]范围内,即将其修正为-6。
2.归一化处理:将输入2的值进行线性变换,映射到[-1 1]范围内,即将其规范化为-0.9284167。
3.模糊化处理:将输入2的值模糊化为一个模糊集合,根据模糊逻辑运算得到控制器的输出。例如,可以将输入2的值划分为三个模糊集合:负大、零、正大,然后根据模糊逻辑规则计算控制器的输出。
相关问题
Matlab中模糊逻辑控制器输入过大
如果模糊逻辑控制器的输入过大,可以考虑对输入进行归一化处理。具体来说,可以将输入值除以一个固定的最大值,这样可以将输入值缩放到 [0,1] 区间内。另外,也可以考虑对输入进行截断处理,将过大的输入值截断到一个固定的最大值。
另外,如果输入值过大导致模糊逻辑控制器无法正常工作,也可以考虑调整模糊化函数和模糊规则,以适应不同的输入范围。例如,可以考虑采用更广泛的隶属函数,或者重新设计模糊规则,以适应更广泛的输入范围。
如何在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中用命令行搭建模糊逻辑控制器的步骤。需要注意的是,以上示例仅供参考,实际应用中需要根据具体问题进行调整和优化。
相关推荐
![](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)