模糊邏輯工具箱在Simulink中…
下面用一個簡單的例子作介紹:
(本例不是特別針對實現什麼功能,只是為了介紹方便)
第一部分 建立一個模糊邏輯(.fis檔案)
第一步:開啟模糊推理系統編輯器
步驟:
在Commond Window 鍵入fuzzy
回車
第二步:使用模糊推理系統編輯器
本例用到兩個輸入,兩個輸出,但預設是一個輸人,一個輸出
步驟:
1、新增一個輸入
2、選擇Input、output(選中為紅框),在Name框裡修改各輸入的名稱
並將And method 改為prod,將Or method 改為 probor
第三步:使用隸屬函式編輯器
該編輯器提供一個友好的人機圖形互動環境,用來設計和修改模糊推理系中各語言變數對應的隸屬度函式的相關引數,如隸屬度函式的形狀、範圍、論域大小等,系統提供的隸屬度函式有三角、梯形、高斯形、鐘形等,也可使用者自行定義。
步驟:
1、 雙擊任何一個輸入量(In_x、In_y)或輸出量開啟隸屬度函式編輯器。
2、在左下處Range和Display
Range處新增取值範圍,本例中In_x和In_y的取值範圍均為[0 10],
Out_x和Out_y的取值範圍均為[0
1]
3、預設每個輸入輸出引數中都只有3個隸屬度函式,本例中每個輸入輸出引數都需要用到五個,其餘幾個需要自己新增:
選中其中一個輸入輸出引數
點選Edit選單,選Add MFS…開啟下列對話方塊
將MF type設定為trimf(三角形隸屬度函式曲線,當然你也需要選擇其他型別)
將Number of MFs 設定為2
點選OK按鈕
同樣給其他三個加入隸屬度函式
4、選中任何一個隸屬度函式(選中為紅色),在Name 中鍵入名稱,在Type中選擇形狀,在Params中鍵入範圍,然後回車如下圖:
Name |
Type |
Params |
IXL2IYL2 |
zmf |
[1 1.5] |
IXL1IYL1 |
trimf |
[1 2.5 4] |
IXZIYZ |
trimf |
[3 5 7] |
IXR1IYR1 |
trimf |
[6 7.5 9] |
IXR2IYR2 |
smf |
[8.5 9] |
Out_x,Out_y隸屬度函式相同,如下:
Name |
Type |
Params |
OXL2OYL2 |
zmf |
[0.1 0.15] |
OXL1OYL2 |
trimf |
[0.1 0.25 0.4] |
OXZOYZ |
trimf |
[0.3 0.5 0.7] |
OXR1OYR1 |
trimf |
[0.6 0.75 0.9] |
OXR2OYR2 |
smf |
[0.85 0.9] |
第四步:使用規則編輯器
通過隸規則編輯器來設計和修改“IF...THEN”形式的模糊控制規則。由該編輯器進行模糊控制規則的設計非常方便,它將輸入量各語言變數自動匹配,而設計者只要通過互動式的圖形環境選擇相應的輸出語言變數,這大大簡化了規則的設計和修改。另外,還可為每條規則選擇權重,以便進行模糊規則的優化。
步驟:
1、開啟規則編輯器
點選Edit選單,選Rules…
選中IXL2,IYL2,OXL2,none(表示不被選中任何隸屬度函式),and選項,權重Weight均設為1,然後點選Add rule 新增規則,同理新增其他規則。
下圖為新增所有role後:
第五步:儲存並檢視結果
步驟:
1、 儲存
2、View->Rules開啟Rule Viewer
3、View->Surface開啟Surface Viewer
第二部分:將模糊邏輯新增到Simulink中
第一步:建立一個Simulink檔案
步驟:
1、開啟Simulink
2、點選新建按鈕建立一個新的.mdl檔案
第二步:新增模糊邏輯
步驟:
1、在Simulink Library Brower 的搜尋框內鍵入Fuzzy Logic Controller找到Fuzzy Logic Controller,並將其拖拽到新建的mdl檔案中
2、雙擊Fuzzy Logic Controller,開啟如下對話方塊,比在其內部鍵入Test
3、關閉對話方塊
第三步:新增其他模組
如下圖,都是常用模組,請自己新增
第四步:儲存並執行
步驟:
1、 儲存為Test.mdl
2、 初始化模糊邏輯控制器,即在Command Window中鍵入Test = readfis('Test.fis'),回車
1、 執行Test.mdl
這裡可以比較一下結果
相關文章
- MATLAB模糊邏輯工具箱函式Matlab函式
- 模糊控制在matlab中常見的疑難問題及模糊邏輯工具箱的使用Matlab
- 在Oracle中,什麼是物理讀和邏輯讀?Oracle
- 經典示例-在快樂中鍛鍊程式邏輯
- 在Linux中,如何使用LVM管理邏輯卷?LinuxLVM
- 在LVM中恢復已刪除的邏輯卷LVM
- MATLAB模糊資料工具箱的使用Matlab
- JS 中的邏輯運算子JS
- 在程式設計中思考,簡化你的判斷邏輯程式設計
- 邏輯分割槽管理 LVM 概念及在Ubuntu中的使用?LVMUbuntu
- 模糊神經網路工具箱函式使用神經網路函式
- matlab模糊控制工具箱使用和模糊控制pid例項參考Matlab
- 形式邏輯(普通邏輯)7:推理概述
- Python中的邏輯表示式Python
- unbound中快取時間邏輯快取
- SAP CRM Product Sales status在中介軟體中的處理邏輯
- 為啥同樣的邏輯在不同前端框架中效果不同前端框架
- 邏輯分析
- 邏輯題
- Centos8中遷移邏輯卷CentOS
- JDBC中PreparedStatement介面的執行邏輯JDBC
- 4步教你學會使用matlab模糊控制工具箱Matlab
- 在Spring Batch中配置重試邏輯 - BaeldungSpringBAT
- 理解Nginx中Server和Location的匹配邏輯NginxServer
- python 中的i++ ,邏輯表示式Python
- 機器學習中的邏輯迴歸模型簡介機器學習邏輯迴歸模型
- java中equals方法與==邏輯運算子薦Java
- java邏輯控制Java
- java取反邏輯Java
- 邏輯運算子
- Linux Shell 邏輯運算子、邏輯表示式詳解Linux
- 基於模糊PID的直流電機控制系統simulink建模與模擬
- python學習----誰在說謊邏輯運算Python
- Flutter中widget生命週期和渲染邏輯Flutter
- Python 中 sorted 如何自定義比較邏輯Python
- SAP中匯率取值選擇邏輯分析測試
- Oracle physical standby中的邏輯備份(exp命令)Oracle
- SCSS 邏輯運算子CSS