使用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下模糊控制器安裝方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM