模糊推理系统相关函数介绍
立即解锁
发布时间: 2025-09-05 01:52:49 阅读量: 3 订阅数: 23 AIGC 

### 模糊推理系统相关函数介绍
在模糊推理系统的构建和使用过程中,有许多实用的函数可以帮助我们完成各种任务,如系统类型转换、隶属度函数参数转换、打开编辑器、创建新系统以及解析规则等。下面将详细介绍这些函数。
#### 1. mam2sug:将Mamdani模糊推理系统转换为Sugeno模糊推理系统
- **功能说明**:该函数用于将Mamdani模糊推理系统转换为Sugeno模糊推理系统。不过需要注意的是,`mam2sug`将在未来版本中被移除,建议使用`convertToSugeno`替代。
- **语法**:
```matlab
sugFIS = mam2sug(mamFIS)
```
- **输入参数**:
- `mamFIS`:Mamdani模糊推理系统,以结构体形式指定。可以在命令行构建,也可使用模糊逻辑设计器构建。
- **输出参数**:
- `sugFIS`:Sugeno模糊推理系统,以结构体形式返回。其具有以下特点:
- 具有常量输出隶属度函数,其值对应于`mamFIS`中输出隶属度函数的质心。
- 使用加权平均去模糊化方法。
- 使用乘积蕴含方法。
- 使用求和聚合方法。
其余属性,包括输入隶属度函数和规则定义,与`mamFIS`保持不变。
- **示例**:
```matlab
% 加载Mamdani模糊推理系统
mam_fismat = readfis('mam22.fis');
% 将系统转换为Sugeno模糊推理系统
sug_fismat = mam2sug(mam_fismat);
% 绘制两个模糊系统的输出曲面
subplot(2,2,1)
gensurf(mam_fismat)
title('Mamdani system (Output 1)')
subplot(2,2,2)
gensurf(sug_fismat)
title('Sugeno system (Output 1)')
subplot(2,2,3)
gensurf(mam_fismat,gensurfOptions('OutputIndex',2))
title('Mamdani system (Output 2)')
subplot(2,2,4)
gensurf(sug_fismat,gensurfOptions('OutputIndex',2))
title('Sugeno system (Output 2)')
```
- **操作步骤**:
1. 加载Mamdani模糊推理系统。
2. 使用`mam2sug`函数进行转换。
3. 绘制输出曲面进行对比。
- **Tips**:
- 若有一个运行良好的Mamdani模糊推理系统,可考虑使用`mam2sug`转换为计算效率更高的Sugeno结构以提高性能。
- 若`sugFIS`有单个输出变量且有适当的输入/输出训练数据,可使用`anfis`调整`sugFIS`的隶属度函数参数。
#### 2. mf2mf:隶属度函数参数转换
- **功能说明**:该函数用于将任何内置隶属度函数类型的参数转换为另一种类型。不过,`mf2mf`将在未来版本中被移除,建议使用`fismf`对象的点表示法进行隶属度函数转换。
- **语法**:
```matlab
outParams = mf2mf(inParams,inType,outType)
```
- **输入参数**:
- `inParams`:要转换的隶属度函数的参数,指定为行向量。
- `inType`:要转换的隶属度函数类型。
- `outType`:要转换到的隶属度函数类型。
可指定的隶属度函数类型如下表所示:
| 隶属度函数类型 | 描述 | 更多信息 |
| --- | --- | --- |
| 'gbellmf' | 广义钟形隶属度函数 | gbellmf |
| 'gaussmf' | 高斯隶属度函数 | gaussmf |
| 'gauss2mf' | 高斯组合隶属度函数 | gauss2mf |
| 'trimf' | 三角形隶属度函数 | trimf |
| 'trapmf' | 梯形隶属度函数 | trapmf |
| 'sigmf' | S形隶属度函数 | sigmf |
| 'dsigmf' | 两个S形隶属度函数的差 | dsigmf |
| 'psigmf' | 两个S形隶属度函数的乘积 | psigmf |
| 'zmf' | Z形隶属度函数 | zmf |
| 'pimf' | π形隶属度函数 | pimf |
| 'smf' | S形隶属度函数 | smf |
- **示例**:
```matlab
x = 0:0.1:5;
mf1 = [1 2 3];
mf2 = mf2mf(mf1,'gbellmf','trimf');
plot(x,gbellmf(x,mf1),x,trimf(x,mf2))
legend('Generalized bell-shaped','Triangle-shaped','Location','South')
ylim([-0.05 1.05])
```
- **操作步骤**:
1. 定义输入参数和隶属度函数类型。
2. 使用`mf2mf`函数进行参数转换。
3. 绘制转换前后的隶属度函数进行对比。
- **兼容性考虑**:
- 之前,要更改模糊推理系统中隶属度函数的类型,需使用`mf2mf`转换参数。
```matlab
fis = readfis('tipper');
oldType = fis.input(1).mf(1).type;
oldParams = fis.input(1).mf(1).params;
fis.input(1).mf(1).type = newType;
fis.input(1).mf(1).params = mf2mf(oldParams,oldType,newType);
```
- 现在,更改隶属度函数类型时,参数会自动转换。
```matlab
fis = readfis('tip
```
0
0
复制全文
相关推荐









