【Matlab 控制】批量修改大型 Simulink 模型中模块的属性
批量修改大型 Simulink 模型中模塊的屬性
- 一、通過Simulink自帶的搜索
- 二、通過命令行進行搜索替換
- 三、使用Model Explorer編輯屬性
在大型Simulink建模中,需要進行某個模塊的屬性修改是很麻煩的事情,除非您對整個模型相當了解,并且能夠快速定位每一個模塊。但是在團隊合作中,您不可能對所有模型都很了解。
比如在飛機仿真建模過程中,其中的氣動庫計算需要使用到大量的查表(Lookup Table)插值模塊,如果想一次性修改所有 Lookup Table 的 Index Search Method 參數。關于飛機的東西不能說的太多,你懂的,本文使用 MATLAB 自帶的 f14 模型,演示如何修改大型 Simulink 中 Gain 模塊的采樣時間(Sample Time)。
更多Simlink實用技巧請猛烈點擊這里http://www.matlabsky.com/forum.php?mod=forumdisplay&fid=17&filter=typeid&typeid=785。
一、通過Simulink自帶的搜索
估計大部分人都是使用這個方法的,也是最容易的。但是有一個致命的缺點,就是必須手動一個一個的修改!
(1)通過菜單Edit→Find…打開查找對話框(當然也可以使用Ctr+F)
(2)Simulink搜索對話框包含很多功能,如果能夠靈活使用,效率還是挺不錯的。在搜索結果列表中,可以直接雙擊打開相應的模塊,還有右擊直接編輯屬性。更多功能大家可以自己慢慢摸索!
(3)使用這個查到對話框的時候,很多同學會發現,在搜到列表中沒法多選,每次只能編輯一個模塊!如果想將某個子系統下所有Gain的采樣時間修改為0.1,那您只能手動一個一個愚公移山了!
二、通過命令行進行搜索替換
Simulink 有一個很大特色,就是所有通過鼠標鍵盤的操作都可以使用命令行完成,這個就便于進行批量建模、修改、仿真,調試等。很多人看到代碼就暈,心想使用Simulink 查找對話框就可以完成了,還這么費心的使用那些破命令。但是有時代碼在代替人工操作時是具有更高的效率。
在命令行進行 Simulink 搜索主要用到 find_system 和 hilite_sysytem 函數,而修改參數則使用到 set_param 函數,下面就嘗試下這對組合吧:
% 不知道find_system每個參數的意義,請查看幫助文檔 blks=find_system(bdroot,'LookUnderMasks','all','FollowLinks','on','blockType','Gain'); for ii=1:length(blks)% 高亮顯示指定模塊hilite_system(blks{ii});% 不知道模塊屬性名,請搜索Block-Specific Parametersset_param(blks{ii},'SampleTime',0.1); endfind_system的幫助文檔如下,其實學會搜索和查看幫助是一種品質!
Gain增益模塊的對話框參數如下,想了解其他模塊,請在幫助文檔中搜索Block-Specific Parameters
三、使用Model Explorer編輯屬性
Model Explorer具有很強的編輯功能,能夠快速、高效、批量的進行變量定義,屬性修改,模型調整等。下面的講解過程,看起來視乎有些繁瑣,但真說明了Model Explorer的功能強大。
(1)首先是打開Model Explorer(什么不知道如何打開,那不妨看看這個)
(2)在Model Hierarchy目錄樹中需要搜索的模型或子系統,在Seach下拉菜單中選擇by Block Type,Type下拉菜單選擇Gain,然后點擊搜索!
(3)中間的面板中列出了搜索到的Gain模塊,將Column View切換到Default,然后在Name標題欄右擊,選擇Insert Path,這樣模型的路徑就會顯示在列表中。點擊Path連接就可以直接定位到模塊。
(4)很多細心同學可能發現,Model Explorer沒有列出系統下所有的Gain模塊,而只有指定系統最頂層的Gain。這是因為Model Explorer默認不搜索子系統。只要在列表中空白處右擊,選擇Show Current System and Below即可。
(5)當您在列表中,選擇任意一個模塊時,右側會出現該模塊屬性面板,您可以根據需要調整。但是當選中選中多個模塊時,右邊的設置面板就變灰,不能允許修改了(這是一種保護手段,防止意外修改模型)。要想一次性修改全部Gain模塊的Sample Time參數,需要如下操作:
●點擊Column View右邊的Show Details,在Find Properties里面輸入sample,選擇SampleTime添加到右邊的Column Name中
●然后在模塊列表中,使用Ctr/Shift + 左擊,選擇多個模塊,直接編輯剛才添加的SampleTime列,所做的修改將應用到所有選中的模塊。
Ref: 批量修改大型Simulink模型中模塊的屬性
帶學習: GUI界面實現批量修改Simulink模塊參數名稱
帶學習: Matlab編程技巧:通過腳本獲取/修改Simulink模塊參數
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【Matlab 控制】批量修改大型 Simulink 模型中模块的属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Paper】2020_Qize_Des
- 下一篇: 【数理知识】《数值分析》李庆扬老师-第2