使用MATLAB生成模糊控制的离线查询表

1.打开模糊控制工具箱,编辑输入输出变量的隶属度函数和模糊控制规则,如下图所示,导出为fuzzy_control.fis文件。

捕获1

2.打开Simulink模块,建立下图所示的系统框图,两输入,一输出,处理模块是Fuzzy Logic Controller with Ruleviewer(或者Fuzzy Logic Controller)。

捕获2

3.在MATLAB窗口命令下输入fuzzy=readfis(‘fuzzy_control’)将之前建立的模糊控制器加载到工作空间,将Simulink中模糊控制模块的参数设置为fuzzy,保存该模型,生成Fuzzy_model.mdl。

捕获3

4.Start->MATLAB->More->SystemTest,打开测试界面,选中Main Test ,菜单栏 Insert -> Test Element -> Simulink ,选择第二步中建立的模型 fuzzy_model 。

5.变量定义。在Test Vectors 项里定义两个测试向量,变量名分别为 input1和input2,编辑两个变量的取值范围;在Test Variables 里定义测试变量,变量名为output。

捕获4

6.变量映射。把测试向量input1、input2分别映射到模糊控制器的输入口 in1、in2,做为输入测试信号。把测试变量 output 映射到模糊控制器输出口out1。设置后的界面如下两图所示。

捕获5

捕获6

6.Save Results,如下图所示。

捕获7

7.保存,进行测试。

8.结果格式转换

  • 系统测试结果保存在 stresults.ResultsDataSet.output 中,为169*1 cell的单元数组(若输出两个变量都有为13个值的序列)。(注:单元cell为 [n*1 double] 结构,表示系统被测试了n次。)
  • 在matlab命令窗口下输入 test_data = stresults.ResultsDataSet.output ,将测试结果另存在变量 test_data 中。
%导入模糊控制器 
%fuzzy=readfis('Fuzzy_20150323.fis'); 
%Run Test

%把下面的代码复制到Command Window运行 
test_data=stresults.ResultsDataSet.Output; 
a=zeros(121,1); 
for i=1:121 
    b=test_data{i}; 
    a(i)=b(1); 
end 
c=reshape(a,11,11); 
table_data=c';

%保存到txt文件 
%d=table_data.*10000; 
%dlmwrite('fuzzy.txt',d,'precision','%.0f','newline','pc')

 参考资料:

  1. 如何利用matlab将模糊逻辑转化为查询表
  2. Matlab模糊工具箱的使用
  3. 简单matlab/simulink模糊控制器应用实例-图
  4. 如何在MATLAB下把模糊推理系统转化为查询表(原创)
  5. 模糊PID Matlab (Simulink)仿真详细步骤
  6. matlab下模糊控制器安装方法
原文地址:https://www.cnblogs.com/yffq/p/4561745.html