圖形用戶界面實現批量修改參數名稱

上一篇文章簡要介紹了批量修改參數名稱的方法,但是每一次批量修改不同的模塊參數名稱時,都需要手動修改代碼。今天我們用Matlab自帶的GUI功能來完成批量修改的任務。


GUI是什麼?Graphical User Interface,圖形用戶界面,即已圖形界面的方式幫助我們實現與計算機的交互,與直接編寫代碼、執行代碼的方式比較,更方便普通人去使用。可以這樣說,我們在電腦上安裝的大部分軟件,都帶有GUI屬性,方便非專業人員更好的使用軟件。GUI只是幫助我們更舒服地使用代碼,代碼一直存在。


我們以上一篇文章中介紹的批量修改參數名稱方法為例,來設計一個GUI界面,方便我們使用這些代碼。

靜態UI設計

UI設計屬於靜態設計,就是把圖形界面設計成自己喜歡的樣子。


在Matlab命令窗口輸入guide,選擇新建,即可打開GUI設計界面,如下圖。

圖形用戶界面實現批量修改參數名稱


為實現批量修改模塊參數名稱需要進行以下操作:


1)1個Panel:搭建一個面板,作為參數輸入界面的外圍框圖,雙擊該圖形,修改其Title為“參數替換”,並修改字體、邊框線性等屬性(這些都比較隨意,修改至自己喜歡的樣子即可)。


2)2個Edit Text:搭建兩個輸入編輯窗口,作為後面進行參數修改的輸入模塊,雙擊這兩個圖形,刪除其String中的定義“Edit Text”,其他屬性也可以按需修改。


3)2個Static Text:搭建兩個靜態窗口,作為上面兩個Edit Text的定義,上級這兩個圖形,修改其String為“替換前參數名”、“替換後參數名”, 其他屬性也可以按需修改。


4)1個Push Button:搭建一個按鈕,作為確認動作的窗口,雙擊圖形,修改其String為“確定”。


5)調整上述圖形的大小、相對位置等,讓整個界面儘量美觀。


操作完以上步驟後,可得到下面的圖形:

圖形用戶界面實現批量修改參數名稱


點擊保存,修改fig名稱為“ParameterReplace”,就會同時保存下兩個文件:.fig和.m。

.fig定義了剛剛設計的靜態圖形界面,.m文件定義了靜態圖形界面中各組件的回調函數,通過編輯這個.m文件可以幫助我們實現GUI界面的動態控制。


回調函數編寫


圖形用戶界面添加交互組件後,此時運行出的GUI界面是靜態的,用鼠標對界面上的組件和菜單進行操作時,不會產生任何響應。這時就需要編寫各圖形對象的回調函數,當用戶用鼠標單擊GUI界面上的某個組件或菜單時,使靜態的GUI界面產生動態的變化。

回調函數的本質就是響應用戶的操作,執行圖形界面背後的代碼,完成程序的正常執行。


為實現批量修改模塊參數名稱的任務,我們需要進行以下操作(更多操作指引請關注公眾號視頻內容):


1)右鍵“確定”按鈕,選擇菜單“View Callbacks”中的子菜單“CallBack”,就可以打開該Push Button按鈕背後的回調函數。


2)把上一篇文章中的批量修改模塊參數名稱代碼直接放在該“確定”按鈕的回調函數下,稍作修改即可,具體代碼如下。

<code>function pushbutton1_Callback(hObject, eventdata, handles)
old=get(handles.edit1,'String');
new=get(handles.edit2,'String');

constant=find_system(gcb,'BlockType','Constant','Value',old);
for i=1:length(constant);
set_param(constant{i},'Value',new);
end

gain=find_system(gcb,'BlockType','Gain','Gain',old);
for i=1:length(gain);
set_param(gain{i},'Gain',new);
end/<code>

用get函數讀取編輯窗口的替換前參數名稱和替換後參數名稱,用gcb獲取當前模型的路徑名。

理論上所有類型模塊的參數名都需要進行上圖所示的for循環,搜尋並替換,本文只做了Constant、Gain兩種模塊的處理。


GUI功能測試


以上完成了GUI靜態圖形和回調函數的設計,得到了以下兩個文件。

圖形用戶界面實現批量修改參數名稱


下面進行GUI測試,具體操作步驟:


1)打開需要替換參數的模型newModel.slx,並用鼠標左鍵單擊選中Subsystem;

圖形用戶界面實現批量修改參數名稱


2)打開.m文件,點擊運行,彈出以下用戶界面;

圖形用戶界面實現批量修改參數名稱


3)替換前參數名中輸入“ConstPara1”,替換後參數名中輸入“NewConstPara1”,點擊確定,模型中的參數“ConstPara1”被成功替換為“NewConstPara1”。

圖形用戶界面實現批量修改參數名稱


測試通過。


以上用GUI界面成功實現了批量修改Simulink模塊參數名稱,相比手改代碼方式,更友好更便捷。


分享到:


相關文章: