zoukankan      html  css  js  c++  java
  • 使用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
Copyright © 2011-2022 走看看