在Simulink中对S 函数进行参数传递的三种方法
1)之前在調程序的時候,用的都是S函數來進行編寫的,但是因為需要對不同的系數設置不同的值,然后看仿真的結果。一開始仿真的時候只會在S函數的文件中修改相應變量的值,每次都要在幾個文件中修改四五個值,然后進行仿真。
2) 上一種的方法實在是太麻煩了,后來經過在MATLAB中文論壇中查找相應的資料和看了孫忠瀟老師的書之后,開始會利用S函數的屬性頁中的對話框(如圖1所示)進行參數變量的傳遞,然后把模型中涉及的S函數中的變量全部寫到一個M腳本文件中(腳本文件),每次仿真程序的時候,先運行這個M文件,然后就可以仿真了,這個好處在于可以成批量的修改參數,如何設置可以參考用Simulink進行仿真遇到的一些問題以及相應的解決方法整理。需要注意的是用這個方法之后是不需要再S函數中定義變量了,直接使用變量名就可以了。為什么這里要強調是M腳本文件呢?因為腳本文件中的值自己運行之后,其值會直接輸出到工作區間中,固然用M 函數文件也可以輸出到工作去年中,但是M函數文件默認是只輸出一個變量的,如果在調用的時候你要輸出多個變量的話,那么就需要指定輸出變量的名稱,這樣的話相比M腳本文件麻煩了許多的。但是在有的情況還是可以使用的。
正如這段代碼一樣:
A=2;
B=3;
C=4;
在直接運行M腳本文件的時候是可以在工作區間看到這三個變量的,但是如果使用M函數的時候是這樣的:[A,B,C]=MFunctionfile_name。
但是這種方法還是不能對S函數中的參變量進行自動的修改并且仿真。目前發現對于S函數模塊可以利用get_param來獲取參數,但是好像并沒有什么用。相應的命令是get_param(‘model_name/S-Function4’,’Parameters’),但是得到的是你設置的變量名稱,并不是變量的值。而且當你使用Set_param時也可以對S函數的參數變量這一欄進行修改,但是修改之后你原來設置的參數名稱也都沒了。
3)后來在無意中對一個示波器進行創建子系統的操作(因為我們不會無聊到對一個模塊來創建子系統吧),就在想是不是也可以對S函數模塊進行這種操作,因為操作子系統之后就可以使用Set_param函數來設置參數變量了。然后就驗證了一個發現是可以這樣做的。
驗證的模型框圖如圖2所示,圖3是自己寫的一個S函數,圖4是采用第二種方法來傳遞參數變量的,圖5是采用第三種方法來傳遞參數變量的。對S函數模塊創建子系統還是需要在圖4的基礎中進行創建。最終的結果如圖6所示,兩種方法的結果是不同的。
在MATLAB中采用M文件實現對Simulink中的S函數程序實現自動調參數
圖1 S函數模塊屬性頁
圖2 仿真模型圖
圖 3 S函數
圖4 第二種方法S函數模塊屬性頁 圖5 第三種方法S函數屬性頁 圖6 最終實驗結果圖總結
以上是生活随笔為你收集整理的在Simulink中对S 函数进行参数传递的三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [SQL]SQL server 常用代码
- 下一篇: hdu4419