模糊邏輯工具箱在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
- 在Linux中,如何使用LVM管理邏輯卷?LinuxLVM
- 在Spring Batch中配置重試邏輯 - BaeldungSpringBAT
- MATLAB模糊資料工具箱的使用Matlab
- matlab模糊控制工具箱使用和模糊控制pid例項參考Matlab
- 在Oracle中,什麼是物理讀和邏輯讀?Oracle
- 在LVM中恢復已刪除的邏輯卷LVM
- 經典示例-在快樂中鍛鍊程式邏輯
- JS 中的邏輯運算子JS
- Python中的邏輯表示式Python
- SAP CRM Product Sales status在中介軟體中的處理邏輯
- 為啥同樣的邏輯在不同前端框架中效果不同前端框架
- unbound中快取時間邏輯快取
- 邏輯題
- 基於模糊PID的直流電機控制系統simulink建模與模擬
- python學習----誰在說謊邏輯運算Python
- JDBC中PreparedStatement介面的執行邏輯JDBC
- Centos8中遷移邏輯卷CentOS
- 中國經濟的數字邏輯
- 邏輯推理20201028
- 量子邏輯閘
- 邏輯運算子
- 邏輯迴歸邏輯迴歸
- java邏輯控制Java
- Flutter中widget生命週期和渲染邏輯Flutter
- 理解Nginx中Server和Location的匹配邏輯NginxServer
- Springboot中mybatis執行邏輯原始碼分析Spring BootMyBatis原始碼
- Python 中 sorted 如何自定義比較邏輯Python
- 西門子合同工承認在電子表格中植入邏輯炸彈
- 如何新建邏輯卷及磁碟掛載,邏輯卷擴容
- 0504邏輯歸因
- 06--加密邏輯加密
- Python邏輯迴歸Python邏輯迴歸
- PostgreSQL:邏輯結構SQL
- LVM 邏輯卷管理LVM
- SCSS 邏輯運算子CSS
- 邏輯迴歸模型邏輯迴歸模型
- UI框架基本邏輯UI框架
- 4、邏輯運算子