當前位置:編程學習大全網 - 源碼下載 - 如何利用matlab將模糊邏輯轉化為查詢表

如何利用matlab將模糊邏輯轉化為查詢表

第壹步:利用matlab模糊控制工具箱設計模糊控制器。

1、在matlab命令窗口中輸入 fuzzy ,產生如下窗口。

2、確定模糊控制器結構,即根據具體的系統確定輸入、輸出量。

這裏我們可以選取標準的二維控制結構,即輸入為誤差e和誤差變化ec,輸出為控制量u。輸入變量的添加通過 Edit -> Add Variable -> Input 實現。

3、語言值及隸屬函數的確定。

首先我們要確定描述輸入輸出變量語言值的模糊子集,如{NB,NM,NS,ZE,PS,PM,PB},並設置輸入輸出變量的論域,例如我們設置誤差E、誤差變化EC的論域為[-6 6],控制量U的論域為[-10 10];然後為模糊語言變量選取相應的隸屬度函數。通過 Edit -> Membership Functions 打開隸屬度函數編輯器,然後分別對輸入輸出變量定義論域範圍,添加隸屬函數,以E為例,設置論域範圍為[-6 6],添加隸屬函數的個數為7。(註:隸屬度函數編輯器初始時已為每個變量定義了3個隸屬函數,再通過 Edit -> Add MFs 添加隸屬函數時,個數選擇4即可)

4、模糊控制規則的制定。

對於我們這個二維控制結構以及相應的輸入模糊集,我們可以制定49條模糊控制規則。

5、解模糊。

模糊控制器的輸出量是壹個模糊集合,通過解模糊化方法判決出壹個確切的精確量,解模糊化方法很多,我們這裏選取重心法。

6、保存建立的模糊控制器。

File -> Export -> To File,文件名為 fuzzy_control。

第二步:建立Simulink模型。

1、在matlab命令窗口中輸入simulink,產生如下窗口。

2、新建模糊控制器模型,樣式如下。

3、在matlab命令窗口下輸入 fuzzy = readfis('fuzzy_control') ,將之前建立的模糊控制器加載到工作空間,並將Fuzzy Logic Contrtoller的參數設置為fuzzy。

4、保存該模型,命名為 fuzzy_model

第三步:系統測試界面的設置。

1、通過 Tools -> System Test -> Launch System Test 進入系統測試界面。

2、添加測試模型。

鼠標選中Main Test ,菜單欄 Insert -> Test Element -> Simulink ,選擇第二步中建立的模型 fuzzy_model 。

3、變量定義。

在Test Vectors 項裏定義兩個測試向量,變量名分別為 input1、input2,input1 = [-6:1:6], input2 = [-6:1:6];在Test Variables 裏定義測試變量,變量名為output。

4、變量映射。

把測試向量input1、input2分別映射到模糊控制器的輸入口 in1、in2,做為輸入測試信號。把測試變量 output 映射到模糊控制器輸出口out1。設置後的界面如下:

輸入測試向量到模糊模型輸入口映射:

5、測試數據保存。

在測試界面點Save Results項,設置如下:

6、運行測試,註意在Main Test(169 Iterations)(169次叠代,運算代價),等待測試結束。

第四步:模糊控制查詢表的生成

1、系統測試結果保存在 stresults.ResultsDataSet.output 中,為169*1 cell的單元數組。(註:單元cell為 [n*1 double] 結構,表示系統被測試了n次)。

2、在matlab命令窗口下輸入 test_data = stresults.ResultsDataSet.output ,將測試結果另存在變量 test_data 中。

3、測試結果格式轉換。

由於所建的二維查詢表為13行13列,所需的數據應該為13*13 double數組,但因為test_data為 169*1 cell 的單元數組,無法直接作為表格數據輸入,因此需先進行格式轉換。

在matlab命令窗口下輸入 table_data = Cell2Array( test_data ,? 1 , 13 , 13 ) ,調用Cell2Array函數,取每個單元數組中的第壹行元素,即第壹次測試數據,返回結果保存在 table_data 中。

源碼如下:

4、新建二維查詢表模型,樣式如下:

5、點開二維查詢表進行如下設置:

6、點 Edit 按鈕,即可查看所生成的表格。?

  • 上一篇:如何購買不同倉位的股票
  • 下一篇:求通達信指標紅色箭頭選股公式
  • copyright 2024編程學習大全網